This commit is contained in:
孟帅
2022-02-25 17:11:17 +08:00
parent 9bd05abb2c
commit 8f3d679a57
897 changed files with 95731 additions and 0 deletions

7
hotgo-uniapp/.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
/unpackage/dist/*
/unpackage/cache/*
/unpackage/release/*
/node_modules/*
/.hbuilderx/*
/.idea/*
deploy.sh

5
hotgo-uniapp/.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,5 @@
{
"i18n-ally.localesPaths": [
"common/locales"
]
}

26
hotgo-uniapp/App.vue Normal file
View File

@@ -0,0 +1,26 @@
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
onLaunch() {
// 国际化,设置当前语言
if (this.vuex_locale){
this.$i18n.locale = this.vuex_locale;
this.$u.api.lang({lang: this.vuex_locale});
}
// 设置底部导航栏角标
uni.setTabBarBadge({
index: 0,
text: '3'
});
// uni.removeTabBarBadge({
// index: 0
// });
}
}
</script>
<style lang="scss">
@import "uview-ui/index.scss";
@import "pages/common/jeesite.scss";
</style>

223
hotgo-uniapp/LICENSE Normal file
View File

@@ -0,0 +1,223 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright (C) 2013-Now, http://jeesite.com (thinkgem@163.com).
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
============================================================================
授权许可补充协议条款:
1. 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款。
2. 不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
3. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、版权声明和其他原作者
规定需要包含的说明(请尊重原作者的著作权,不要删除或修改文件中的`Copyright`和`@author`信息)
更不要,全局替换源代码中的 jeesite 或 ThinkGem 等字样,否则你将违反本协议条款承担责任。
4. 基于本软件完成的软件作品,只能使用 JeeSite 作为后台服务,除外情况不允许二次分发或开源。
5. 您若套用本软件的一些代码或功能参考,请保留源文件中的版权和作者,需要在您的软件介绍明显位置
说明出处,举例:本软件基于 JeeSite 快速开发平台-手机端并附带链接http://jeesite.com
6. 任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
7. 如果你对本软件有改进,希望可以贡献给我们,共同进步。
8. 本项目已申请软件著作权,请尊重开源,感谢阅读。
版权所有:济南卓源软件有限公司
官方网址http://jeesite.com
技术服务http://s.jeesite.com

151
hotgo-uniapp/README.md Normal file
View File

@@ -0,0 +1,151 @@
<p align="center">
<img alt="JeeSite" src="https://jeesite.com/assets/images/logo.png" width="120" height="120" style="margin-bottom: 10px;">
</p>
<h3 align="center" style="margin:30px 0 30px;font-weight:bold;font-size:30px;">快速开发平台 - 手机端</h3>
## 引言
JeeSite Mobile Uni-App 是 JeeSite 手机端框架/移动端框架,基于 uni-app、uView UI 实现。
uni-app 是一个使用 Vue.js 开发所有前端应用的框架开发者编写一套代码可发布到iOS、Android、Web、
以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。
uView UI是 uni-app 生态最优秀的 UI 框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水。
## 特性
* 支持 AndroidiOSH5微信小程序等其它小程序平台。
* 移动端是无 Cookie 环境的,该项目对移动端进行会话环境封装,
* 让你像 Cookie 一样使用 token无需特别处理有框架帮你完成。
* 化繁为简,封装 vuex 的繁琐,简单通过 api 即可进行 state 存取。
* 贴心的表单组件封装,下拉框、复选框、文件上传,完美与后端 JeeSite 结合。
* uView 提供 60+ 精选组件,功能丰富,多端兼容,让您快速集成,开箱即用。
* 众多贴心的 JS 利器,让您飞镖在手,召之即来,百步穿杨。
* 众多的常用页面和布局,让您专注逻辑,事半功倍。
* 合理使用 style 的 scoped 减少包体积大小。
* 详尽的文档支持,现代化的演示效果。
* 按需引入,精简打包体积。
* 移动端完整开源。
## 功能列表
* 账号登录、记住我(下次免登录)
* 自助服务:找回密码功能、账号注册功能
* 我的主页:修改个人信息、修改头像和裁剪、修改密码
* 辅助功能:关于我们、意见反馈、检查更新、帮助中心
* 工作台功能列表主页、消息列表页面
* 增删改查示例
* 工作流引擎
## 快速体验
1、H5 APP 端访问地址:<a href="https://demo.jeesite.com/app" target="blank">https://demo.jeesite.com/app</a> (最新演示)
<br>&nbsp; &nbsp; &nbsp; 获得H5最佳体验操作方法Chrome 为例,在浏览器上按 F12 打开“开发者工具”,点击该工具左上角第二个按钮
“Toggle device toolbar”显示“切换设备工具栏”然后在该工具栏上点击“Responsive”下拉选择“iPhone6/7/8”再按“F5”刷新页面即可。
2、微信小程序端通过**微信**扫码(最佳体验,但不是最新演示,更新延迟)<br><br>
<img src="https://jeesite.com/assets/images/wx_app.jpg" width="220" height="220" >
3、安卓 Android 安装包,点击下载:[JeeSite4.3.1.apk](https://gitee.com/thinkgem/jeesite4/attach_files/925161/download)
## 快速运行
1、下载并安装<a href="https://www.dcloud.io/hbuilderx.html" target="blank">集成开发环境 HBuilderX</a>
(推荐,也可以使用 VSCode 或 WebStorm
2、菜单文件 -> 导入 -> 从本地目录导入,选择 “jeesite4-uniapp” 文件夹。
3、菜单运行 -> 运行到内置浏览器(或运行到浏览器 -> Chrome 浏览器)。
4、等待 HBuliderX 控制台编译完成后,会自动弹出手机登录页面。
## 安装服务端
本项目后台服务默认连接的是 demo.jeesite.com 官网演示环境,你需要替换为你的 JeeSite 后台,步骤如下:
1、安装 JeeSite 最新版:<a href="https://gitee.com/thinkgem/jeesite4#%E6%9C%AC%E5%9C%B0%E8%BF%90%E8%A1%8C" target="blank">https://gitee.com/thinkgem/jeesite4#本地运行</a>
(本项目支持 v4.2.3 或以上版本,若已安装,请执行 `bin/package.bat` 更新依赖)
2、打开 application.yml 修改如下配置Ajax跨域设置和与后台基础交互的请求头名
```yml
# Shiro 相关
shiro:
# 是否允许跨域访问 CORS如果允许设置允许的域名。v4.2.3 开始支持多个域名和模糊匹配例如http://*.jeesite.com,http://*.jeesite.net
accessControlAllowOrigin: '*'
# 允许跨域访问时 CORS可以获取和返回的方法和请求头
accessControlAllowMethods: GET, POST, OPTIONS
accessControlAllowHeaders: content-type, x-requested-with, x-ajax, x-token, x-remember
accessControlExposeHeaders: x-remember
# Session 相关
session:
# 设置接收 SessionId 请求参数和请求头名称
sessionIdHeaderName: x-token
# 记住我的请求参数和请求头的名称
rememberMeHeaderName: x-remember
# Web 相关
web:
# AJAX 接受参数名和请求头名
ajaxHeaderName: x-ajax
```
3、打开手机端项目的 `/common/config.js` 修改 `config.baseUrl` 后端服务地址为你安装的 JeeSite 服务地址。
## 生态系统
* 分布式微服务系统Spring Cloud<https://gitee.com/thinkgem/jeesite4-cloud>
* JFlow工作流引擎<https://gitee.com/thinkgem/jeesite4-jflow> <http://ccflow.org>
* Flowable业务流程模块BPM<http://jeesite.com/docs/bpm/>
* 内容管理模块CMS<https://gitee.com/thinkgem/jeesite4-cms>
* 手机端移动端:<https://gitee.com/thinkgem/jeesite4-uniapp>
## 学习路线
1. <a href="https://uniapp.dcloud.io/README" target="blank">什么是 uni-app、为什么选择 uni-app</a>
2. <a href="https://www.dcloud.io/hbuilderx.html" target="blank">集成开发环境 HBuilderX 下载</a>
3. <a href="https://ke.qq.com/course/3169971" target="blank">uni-app 官方视频教程</a>
4. <a href="http://ask.dcloud.net.cn/article/35657" target="blank">如果你熟悉 h5但不熟悉 Vue 和小程序,请看这篇白话 uni-app</a>
5. <a href="https://uniapp.dcloud.io/vue-basics" target="blank">Vue.js 视频 + 文档教程</a>
## 学习文档
* <a href="https://uniapp.dcloud.io/collocation/pages" target="blank">uni-app 框架文档</a>
* <a href="https://uniapp.dcloud.io/component/README" target="blank">uni-app 组件文档</a>
* <a href="https://uviewui.com/components/intro.html" target="blank">uView 组件文档</a>
* <a href="https://uviewui.com/js/intro.html" target="blank">uView JS 文档</a>
## 打包发布
* 打开 `/common/config.js` 找到 `config.baseUrl` 修改为正式的手机端后台服务地址
* 阅读这篇文章:<a href="https://uniapp.dcloud.io/quickstart-hx?id=%e5%8f%91%e5%b8%83uni-app" target="blank">如何发布 uni-app 软件</a>
* <a href="https://ask.dcloud.net.cn/article/34972" target="blank">uni-app 整包升级、冷更新</a>
* <a href="https://ask.dcloud.net.cn/article/35667" target="blank">uni-app 资源升级、热更新</a>
## 授权许可协议条款
1. 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款。
2. 不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
3. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、版权声明和其他原作者
规定需要包含的说明(请尊重原作者的著作权,不要删除或修改文件中的`Copyright``@author`信息)
更不要,全局替换源代码中的 jeesite 或 ThinkGem 等字样,否则你将违反本协议条款承担责任。
4. 基于本软件完成的软件作品,只能使用 JeeSite 作为后台服务,除外情况不允许二次分发或开源。
5. 您若套用本软件的一些代码或功能参考,请保留源文件中的版权和作者,需要在您的软件介绍明显位置
说明出处,举例:本软件基于 JeeSite 快速开发平台-手机端并附带链接http://jeesite.com
6. 任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
7. 如果你对本软件有改进,希望可以贡献给我们,共同进步。
8. 本项目已申请软件著作权,请尊重开源,感谢阅读。
## 技术服务与支持
* 本软件免费,我们也提供了相应的收费服务,因为:
* 没有资金的支撑就很难得到发展,特别是一个好的产品,如果 JeeSite 帮助了您请为我们点赞本软件Git仓库首页右上角点击 star 按钮,关注我们)。支持我们,您可以得到一些回报,有了这些我们会把公益事业做的更好,回报社区和社会,请给我们一些动力吧,在此非常感谢已支持我们的朋友!
* **联系方式官方商务QQ[1766571055](http://wpa.qq.com/msgrd?v=3&uin=1766571055&site=qq&menu=yes)**
* 技术服务支持网页:<http://s.jeesite.com>

View File

@@ -0,0 +1,74 @@
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define([], function() {factory(root);});
} else factory(root);
// node.js has always supported base64 conversions, while browsers that support
// web workers support base64 too, but you may never know.
})(typeof exports !== "undefined" ? exports : this, function(root) {
if (root.atob) {
// Some browsers' implementation of atob doesn't support whitespaces
// in the encoded string (notably, IE). This wraps the native atob
// in a function that strips the whitespaces.
// The original function can be retrieved in atob.original
try {
root.atob(" ");
} catch(e) {
root.atob = (function(atob) {
var func = function(string) {
return atob(String(string).replace(/[\t\n\f\r ]+/g, ""));
};
func.original = atob;
return func;
})(root.atob);
}
return;
}
// base64 character set, plus padding character (=)
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
// Regular expression to check formal correctness of base64 encoded strings
b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
root.btoa = function(string) {
string = String(string);
var bitmap, a, b, c,
result = "", i = 0,
rest = string.length % 3; // To determine the final padding
for (; i < string.length;) {
if ((a = string.charCodeAt(i++)) > 255
|| (b = string.charCodeAt(i++)) > 255
|| (c = string.charCodeAt(i++)) > 255)
throw new TypeError("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.");
bitmap = (a << 16) | (b << 8) | c;
result += b64.charAt(bitmap >> 18 & 63) + b64.charAt(bitmap >> 12 & 63)
+ b64.charAt(bitmap >> 6 & 63) + b64.charAt(bitmap & 63);
}
// If there's need of padding, replace the last 'A's with equal signs
return rest ? result.slice(0, rest - 3) + "===".substring(rest) : result;
};
root.atob = function(string) {
// atob can work with strings with whitespaces, even inside the encoded part,
// but only \t, \n, \f, \r and ' ', which can be stripped.
string = String(string).replace(/[\t\n\f\r ]+/g, "");
if (!b64re.test(string))
throw new TypeError("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");
// Adding the padding if missing, for semplicity
string += "==".slice(2 - (string.length & 3));
var bitmap, result = "", r1, r2, i = 0;
for (; i < string.length;) {
bitmap = b64.indexOf(string.charAt(i++)) << 18 | b64.indexOf(string.charAt(i++)) << 12
| (r1 = b64.indexOf(string.charAt(i++))) << 6 | (r2 = b64.indexOf(string.charAt(i++)));
result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255)
: r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255)
: String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);
}
return result;
};
});

View File

@@ -0,0 +1,35 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
const config = {
// 产品名称
productName: 'JeeSite Mobile',
// 公司名称
companyName: 'ThinkGem',
// 产品版本号
productVersion: 'V4.3.2',
// 版本检查标识
appCode: 'android',
// 内部版本号码
appVersion: 1,
// 管理基础路径
adminPath: ''
}
// 设置后台接口服务的基础地址
config.baseUrl = 'http://localhost:8299/api';
// 建议:打开下面注释,方便根据环境,自动设定服务地址
if (process.env.NODE_ENV === 'development'){
// config.baseUrl = '/../js'; // 代理模式 vue.config.js 中找到 devServer 设置的地址
// config.baseUrl = 'http://127.0.0.1:8980/js';
}
export default config;

View File

@@ -0,0 +1,72 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
// 此处第二个参数vm就是我们在页面使用的this你可以通过vm获取vuex等操作
const install = (Vue, vm) => {
// 参数配置对象
const config = vm.vuex_config;
// 将各个定义的接口名称统一放进对象挂载到vm.$u.api(因为vm就是this也即this.$u.api)下
vm.$u.api = {
/** 登录 */
loginCheck: (params = {}) => vm.$u.get(config.adminPath + '/login/check', params),
login: (params = {}) => vm.$u.post(config.adminPath + '/login/sign', params),
logout: (params = {}) => vm.$u.get(config.adminPath + '/login/logout', params),
/** 会员 */
memberProfile: (params = {}) => vm.$u.get(config.adminPath + '/member/profile', params),
// 基础服务:登录登出、身份信息、菜单授权、切换系统、字典数据等
lang: (params = {}) => vm.$u.get('/base/lang', {'l': params.lang}),
index: (params = {}) => vm.$u.get(config.adminPath + '/index', params),
authInfo: (params = {}) => vm.$u.get(config.adminPath + '/authInfo', params),
menuTree: (params = {}) => vm.$u.get(config.adminPath + '/menuTree', params),
switchSys: (params = {}) => vm.$u.get(config.adminPath + '/switch/' + params.sysCode),
dictData: (params = {}) => vm.$u.get(config.adminPath + '/dict/attribute', params),
// 账号服务:验证码接口、忘记密码接口、注册账号接口等
validCode: (params = {}) => vm.$u.getText('/validCode', params),
getFpValidCode: (params = {}) => vm.$u.post('/account/getFpValidCode', params),
savePwdByValidCode: (params = {}) => vm.$u.post('/account/savePwdByValidCode', params),
getRegValidCode: (params = {}) => vm.$u.post('/account/getRegValidCode', params),
saveRegByValidCode: (params = {}) => vm.$u.post('/account/saveRegByValidCode', params),
// APP公共服务
upgradeCheck: () => vm.$u.post('/app/upgrade/check', {appCode: config.appCode, appVersion: config.appVersion}),
commentSave: (params = {}) => vm.$u.post('/app/comment/save', params),
// 个人信息修改
user: {
infoSaveBase: (params = {}) => vm.$u.post(config.adminPath + '/sys/user/infoSaveBase', params),
infoSavePwd: (params = {}) => vm.$u.post(config.adminPath + '/sys/user/infoSavePwd', params),
infoSavePqa: (params = {}) => vm.$u.post(config.adminPath + '/sys/user/infoSavePqa', params),
},
// 员工用户查询
empUser: {
listData: (params = {}) => vm.$u.get(config.adminPath + '/sys/empUser/listData', params),
},
// 组织机构查询
office: {
treeData: (params = {}) => vm.$u.get(config.adminPath + '/sys/office/treeData', params),
},
// 增删改查例子
testData: {
form: (params = {}) => vm.$u.post(config.adminPath + '/test/testData/form', params),
list: (params = {}) => vm.$u.get(config.adminPath + '/log/list', params),
save: (params = {}) => vm.$u.postJson(config.adminPath + '/test/testData/save', params),
disable: (params = {}) => vm.$u.post(config.adminPath + '/test/testData/disable', params),
enable: (params = {}) => vm.$u.post(config.adminPath + '/test/testData/enable', params),
delete: (params = {}) => vm.$u.post(config.adminPath + '/test/testData/delete', params),
},
};
}
export default {
install
}

View File

@@ -0,0 +1,139 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
// 此处第二个参数vm就是我们在页面使用的this你可以通过vm获取vuex等操作
const install = (Vue, vm) => {
// 通用请求头设定
const ajaxHeader = 'x-ajax';
const sessionIdHeader = 'Authorization';
const rememberMeHeader = 'x-remember';
// 请求参数默认配置
Vue.prototype.$u.http.setConfig({
baseUrl: vm.vuex_config.baseUrl,
originalData: true,
// 默认头部http2约定header名称统一小写 ThinkGem
header: {
'content-type': 'application/x-www-form-urlencoded',
'x-requested-with': 'XMLHttpRequest'
}
});
// 请求拦截配置Token等参数
Vue.prototype.$u.http.interceptor.request = (req) => {
if (!req.header) {
req.header = [];
}
// 默认指定返回 JSON 数据
if (!req.header[ajaxHeader]) {
req.header[ajaxHeader] = 'json';
}
// 设定传递 Token 认证参数 ThinkGem
if (!req.header[sessionIdHeader] && vm.vuex_token) {
req.header[sessionIdHeader] = 'Bearer ' + vm.vuex_token;
}
// 为节省流量,记住我数据不是每次都发送的,当会话失效后,尝试重试登录 ThinkGem
if (!req.header[rememberMeHeader] && vm.vuex_remember && req.remember) {
req.header[rememberMeHeader] = vm.vuex_remember;
req.remember = false;
}
// console.log('request', req);
return req;
}
// 响应拦截,判断状态码是否通过
Vue.prototype.$u.http.interceptor.response = async (res, req) => {
// console.log('拦截器response:' + JSON.stringify(res))
// console.log('options:' + JSON.stringify(req))
let data = res.data;
if (!(data)) {
vm.$u.toast('未连接到服务器');
return false;
}
if (typeof data === 'object') {
// 异常接管
if (data.code === 61) {
this.$u.toast('请重新登录');
setTimeout(() => {
uni.reLaunch({
url: '/pages/sys/login/index'
});
}, 500);
return
}
if (data.code === -1 || data.code >= 50 && data.code <= 70) {
this.$u.toast(data.message);
return
}
// 登录
if (req.url.indexOf("/api/login/sign") !== -1) {
vm.$u.vuex('vuex_token', data.data.token);
vm.$u.vuex('vuex_user', data.data);
}
if (data.result === 'login') {
vm.$u.vuex('vuex_token', '');
vm.$u.vuex('vuex_user', {});
if (req.tryagain === undefined || req.tryagain) {
req.tryagain = false;
req.remember = true;
await vm.$u.http.request(req).then(res => {
data = res;
});
}
if (data.result === 'login') {
if (!req.data.loginCheck) {
vm.$u.toast(data.message);
}
req.tryagain = true;
}
}
}
if (res.header && res.header[rememberMeHeader]) {
let remember = res.header[rememberMeHeader];
if (remember && remember !== 'deleteMe') {
vm.$u.vuex('vuex_remember', remember);
} else {
vm.$u.vuex('vuex_remember', '');
}
}
return data;
}
// 封装 get text 请求
vm.$u.getText = (url, data = {}, header = {}) => {
return vm.$u.http.request({
dataType: 'text',
method: 'GET',
url,
header,
data
})
}
// 封装 post json 请求
vm.$u.postJson = (url, data = {}, header = {}) => {
header['content-type'] = 'application/json';
return vm.$u.http.request({
url,
method: 'POST',
header,
data
})
}
}
export default {
install
}

View File

@@ -0,0 +1,33 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
common: {
title: 'JeeSite',
},
nav: {
home: 'Home',
user: 'User',
msg: 'Msg'
},
login: {
title: 'Login',
placeholderAccount: 'Enter Account',
placeholderPassword: 'Enter Password',
autoLogin: 'Auto Login',
loginButton: 'Login',
logoutButton: 'Logout',
forget: 'Forget Password',
reg: 'Resister Account',
noLogin: 'No Login'
},
home: {
title: 'Home'
},
user: {
title: 'User'
},
msg: {
title: 'Message'
}
}

View File

@@ -0,0 +1,33 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
common: {
title: 'JeeSite',
},
nav: {
home: '工作台',
user: '用户',
msg: '消息'
},
login: {
title: '登录',
placeholderAccount: '请输入账号',
placeholderPassword: '请输入密码',
autoLogin: '自动登录',
loginButton: '登录',
logoutButton: '退出登录',
forget: '忘记密码',
reg: '注册账号',
noLogin: '未登录'
},
home: {
title: '工作台'
},
user: {
title: '用户中心'
},
msg: {
title: '消息提醒'
}
}

View File

@@ -0,0 +1,751 @@
(function (factory) {
if (typeof exports === 'object') {
// Node/CommonJS
module.exports = factory();
} else if (typeof define === 'function' && define.amd) {
// AMD
define(factory);
} else {
// Browser globals (with support for web workers)
var glob;
try {
glob = window;
} catch (e) {
glob = self;
}
glob.SparkMD5 = factory();
}
}(function (undefined) {
'use strict';
/*
* Fastest md5 implementation around (JKM md5).
* Credits: Joseph Myers
*
* @see http://www.myersdaily.org/joseph/javascript/md5-text.html
* @see http://jsperf.com/md5-shootout/7
*/
/* this function is much faster,
so if possible we use it. Some IEs
are the only ones I know of that
need the idiotic second function,
generated by an if clause. */
var add32 = function (a, b) {
return (a + b) & 0xFFFFFFFF;
},
hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
function cmn(q, a, b, x, s, t) {
a = add32(add32(a, q), add32(x, t));
return add32((a << s) | (a >>> (32 - s)), b);
}
function md5cycle(x, k) {
var a = x[0],
b = x[1],
c = x[2],
d = x[3];
a += (b & c | ~b & d) + k[0] - 680876936 | 0;
a = (a << 7 | a >>> 25) + b | 0;
d += (a & b | ~a & c) + k[1] - 389564586 | 0;
d = (d << 12 | d >>> 20) + a | 0;
c += (d & a | ~d & b) + k[2] + 606105819 | 0;
c = (c << 17 | c >>> 15) + d | 0;
b += (c & d | ~c & a) + k[3] - 1044525330 | 0;
b = (b << 22 | b >>> 10) + c | 0;
a += (b & c | ~b & d) + k[4] - 176418897 | 0;
a = (a << 7 | a >>> 25) + b | 0;
d += (a & b | ~a & c) + k[5] + 1200080426 | 0;
d = (d << 12 | d >>> 20) + a | 0;
c += (d & a | ~d & b) + k[6] - 1473231341 | 0;
c = (c << 17 | c >>> 15) + d | 0;
b += (c & d | ~c & a) + k[7] - 45705983 | 0;
b = (b << 22 | b >>> 10) + c | 0;
a += (b & c | ~b & d) + k[8] + 1770035416 | 0;
a = (a << 7 | a >>> 25) + b | 0;
d += (a & b | ~a & c) + k[9] - 1958414417 | 0;
d = (d << 12 | d >>> 20) + a | 0;
c += (d & a | ~d & b) + k[10] - 42063 | 0;
c = (c << 17 | c >>> 15) + d | 0;
b += (c & d | ~c & a) + k[11] - 1990404162 | 0;
b = (b << 22 | b >>> 10) + c | 0;
a += (b & c | ~b & d) + k[12] + 1804603682 | 0;
a = (a << 7 | a >>> 25) + b | 0;
d += (a & b | ~a & c) + k[13] - 40341101 | 0;
d = (d << 12 | d >>> 20) + a | 0;
c += (d & a | ~d & b) + k[14] - 1502002290 | 0;
c = (c << 17 | c >>> 15) + d | 0;
b += (c & d | ~c & a) + k[15] + 1236535329 | 0;
b = (b << 22 | b >>> 10) + c | 0;
a += (b & d | c & ~d) + k[1] - 165796510 | 0;
a = (a << 5 | a >>> 27) + b | 0;
d += (a & c | b & ~c) + k[6] - 1069501632 | 0;
d = (d << 9 | d >>> 23) + a | 0;
c += (d & b | a & ~b) + k[11] + 643717713 | 0;
c = (c << 14 | c >>> 18) + d | 0;
b += (c & a | d & ~a) + k[0] - 373897302 | 0;
b = (b << 20 | b >>> 12) + c | 0;
a += (b & d | c & ~d) + k[5] - 701558691 | 0;
a = (a << 5 | a >>> 27) + b | 0;
d += (a & c | b & ~c) + k[10] + 38016083 | 0;
d = (d << 9 | d >>> 23) + a | 0;
c += (d & b | a & ~b) + k[15] - 660478335 | 0;
c = (c << 14 | c >>> 18) + d | 0;
b += (c & a | d & ~a) + k[4] - 405537848 | 0;
b = (b << 20 | b >>> 12) + c | 0;
a += (b & d | c & ~d) + k[9] + 568446438 | 0;
a = (a << 5 | a >>> 27) + b | 0;
d += (a & c | b & ~c) + k[14] - 1019803690 | 0;
d = (d << 9 | d >>> 23) + a | 0;
c += (d & b | a & ~b) + k[3] - 187363961 | 0;
c = (c << 14 | c >>> 18) + d | 0;
b += (c & a | d & ~a) + k[8] + 1163531501 | 0;
b = (b << 20 | b >>> 12) + c | 0;
a += (b & d | c & ~d) + k[13] - 1444681467 | 0;
a = (a << 5 | a >>> 27) + b | 0;
d += (a & c | b & ~c) + k[2] - 51403784 | 0;
d = (d << 9 | d >>> 23) + a | 0;
c += (d & b | a & ~b) + k[7] + 1735328473 | 0;
c = (c << 14 | c >>> 18) + d | 0;
b += (c & a | d & ~a) + k[12] - 1926607734 | 0;
b = (b << 20 | b >>> 12) + c | 0;
a += (b ^ c ^ d) + k[5] - 378558 | 0;
a = (a << 4 | a >>> 28) + b | 0;
d += (a ^ b ^ c) + k[8] - 2022574463 | 0;
d = (d << 11 | d >>> 21) + a | 0;
c += (d ^ a ^ b) + k[11] + 1839030562 | 0;
c = (c << 16 | c >>> 16) + d | 0;
b += (c ^ d ^ a) + k[14] - 35309556 | 0;
b = (b << 23 | b >>> 9) + c | 0;
a += (b ^ c ^ d) + k[1] - 1530992060 | 0;
a = (a << 4 | a >>> 28) + b | 0;
d += (a ^ b ^ c) + k[4] + 1272893353 | 0;
d = (d << 11 | d >>> 21) + a | 0;
c += (d ^ a ^ b) + k[7] - 155497632 | 0;
c = (c << 16 | c >>> 16) + d | 0;
b += (c ^ d ^ a) + k[10] - 1094730640 | 0;
b = (b << 23 | b >>> 9) + c | 0;
a += (b ^ c ^ d) + k[13] + 681279174 | 0;
a = (a << 4 | a >>> 28) + b | 0;
d += (a ^ b ^ c) + k[0] - 358537222 | 0;
d = (d << 11 | d >>> 21) + a | 0;
c += (d ^ a ^ b) + k[3] - 722521979 | 0;
c = (c << 16 | c >>> 16) + d | 0;
b += (c ^ d ^ a) + k[6] + 76029189 | 0;
b = (b << 23 | b >>> 9) + c | 0;
a += (b ^ c ^ d) + k[9] - 640364487 | 0;
a = (a << 4 | a >>> 28) + b | 0;
d += (a ^ b ^ c) + k[12] - 421815835 | 0;
d = (d << 11 | d >>> 21) + a | 0;
c += (d ^ a ^ b) + k[15] + 530742520 | 0;
c = (c << 16 | c >>> 16) + d | 0;
b += (c ^ d ^ a) + k[2] - 995338651 | 0;
b = (b << 23 | b >>> 9) + c | 0;
a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;
a = (a << 6 | a >>> 26) + b | 0;
d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;
d = (d << 10 | d >>> 22) + a | 0;
c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;
c = (c << 15 | c >>> 17) + d | 0;
b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;
b = (b << 21 |b >>> 11) + c | 0;
a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;
a = (a << 6 | a >>> 26) + b | 0;
d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;
d = (d << 10 | d >>> 22) + a | 0;
c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;
c = (c << 15 | c >>> 17) + d | 0;
b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;
b = (b << 21 |b >>> 11) + c | 0;
a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;
a = (a << 6 | a >>> 26) + b | 0;
d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;
d = (d << 10 | d >>> 22) + a | 0;
c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;
c = (c << 15 | c >>> 17) + d | 0;
b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;
b = (b << 21 |b >>> 11) + c | 0;
a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;
a = (a << 6 | a >>> 26) + b | 0;
d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;
d = (d << 10 | d >>> 22) + a | 0;
c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;
c = (c << 15 | c >>> 17) + d | 0;
b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;
b = (b << 21 | b >>> 11) + c | 0;
x[0] = a + x[0] | 0;
x[1] = b + x[1] | 0;
x[2] = c + x[2] | 0;
x[3] = d + x[3] | 0;
}
function md5blk(s) {
var md5blks = [],
i; /* Andy King said do it this way. */
for (i = 0; i < 64; i += 4) {
md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);
}
return md5blks;
}
function md5blk_array(a) {
var md5blks = [],
i; /* Andy King said do it this way. */
for (i = 0; i < 64; i += 4) {
md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);
}
return md5blks;
}
function md51(s) {
var n = s.length,
state = [1732584193, -271733879, -1732584194, 271733878],
i,
length,
tail,
tmp,
lo,
hi;
for (i = 64; i <= n; i += 64) {
md5cycle(state, md5blk(s.substring(i - 64, i)));
}
s = s.substring(i - 64);
length = s.length;
tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
for (i = 0; i < length; i += 1) {
tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);
}
tail[i >> 2] |= 0x80 << ((i % 4) << 3);
if (i > 55) {
md5cycle(state, tail);
for (i = 0; i < 16; i += 1) {
tail[i] = 0;
}
}
// Beware that the final length might not fit in 32 bits so we take care of that
tmp = n * 8;
tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);
lo = parseInt(tmp[2], 16);
hi = parseInt(tmp[1], 16) || 0;
tail[14] = lo;
tail[15] = hi;
md5cycle(state, tail);
return state;
}
function md51_array(a) {
var n = a.length,
state = [1732584193, -271733879, -1732584194, 271733878],
i,
length,
tail,
tmp,
lo,
hi;
for (i = 64; i <= n; i += 64) {
md5cycle(state, md5blk_array(a.subarray(i - 64, i)));
}
// Not sure if it is a bug, however IE10 will always produce a sub array of length 1
// containing the last element of the parent array if the sub array specified starts
// beyond the length of the parent array - weird.
// https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue
a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);
length = a.length;
tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
for (i = 0; i < length; i += 1) {
tail[i >> 2] |= a[i] << ((i % 4) << 3);
}
tail[i >> 2] |= 0x80 << ((i % 4) << 3);
if (i > 55) {
md5cycle(state, tail);
for (i = 0; i < 16; i += 1) {
tail[i] = 0;
}
}
// Beware that the final length might not fit in 32 bits so we take care of that
tmp = n * 8;
tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);
lo = parseInt(tmp[2], 16);
hi = parseInt(tmp[1], 16) || 0;
tail[14] = lo;
tail[15] = hi;
md5cycle(state, tail);
return state;
}
function rhex(n) {
var s = '',
j;
for (j = 0; j < 4; j += 1) {
s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];
}
return s;
}
function hex(x) {
var i;
for (i = 0; i < x.length; i += 1) {
x[i] = rhex(x[i]);
}
return x.join('');
}
// In some cases the fast add32 function cannot be used..
if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {
add32 = function (x, y) {
var lsw = (x & 0xFFFF) + (y & 0xFFFF),
msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
};
}
// ---------------------------------------------------
/**
* ArrayBuffer slice polyfill.
*
* @see https://github.com/ttaubert/node-arraybuffer-slice
*/
if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {
(function () {
function clamp(val, length) {
val = (val | 0) || 0;
if (val < 0) {
return Math.max(val + length, 0);
}
return Math.min(val, length);
}
ArrayBuffer.prototype.slice = function (from, to) {
var length = this.byteLength,
begin = clamp(from, length),
end = length,
num,
target,
targetArray,
sourceArray;
if (to !== undefined) {
end = clamp(to, length);
}
if (begin > end) {
return new ArrayBuffer(0);
}
num = end - begin;
target = new ArrayBuffer(num);
targetArray = new Uint8Array(target);
sourceArray = new Uint8Array(this, begin, num);
targetArray.set(sourceArray);
return target;
};
})();
}
// ---------------------------------------------------
/**
* Helpers.
*/
function toUtf8(str) {
if (/[\u0080-\uFFFF]/.test(str)) {
str = unescape(encodeURIComponent(str));
}
return str;
}
function utf8Str2ArrayBuffer(str, returnUInt8Array) {
var length = str.length,
buff = new ArrayBuffer(length),
arr = new Uint8Array(buff),
i;
for (i = 0; i < length; i += 1) {
arr[i] = str.charCodeAt(i);
}
return returnUInt8Array ? arr : buff;
}
function arrayBuffer2Utf8Str(buff) {
return String.fromCharCode.apply(null, new Uint8Array(buff));
}
function concatenateArrayBuffers(first, second, returnUInt8Array) {
var result = new Uint8Array(first.byteLength + second.byteLength);
result.set(new Uint8Array(first));
result.set(new Uint8Array(second), first.byteLength);
return returnUInt8Array ? result : result.buffer;
}
function hexToBinaryString(hex) {
var bytes = [],
length = hex.length,
x;
for (x = 0; x < length - 1; x += 2) {
bytes.push(parseInt(hex.substr(x, 2), 16));
}
return String.fromCharCode.apply(String, bytes);
}
// ---------------------------------------------------
/**
* SparkMD5 OOP implementation.
*
* Use this class to perform an incremental md5, otherwise use the
* static methods instead.
*/
function SparkMD5() {
// call reset to init the instance
this.reset();
}
/**
* Appends a string.
* A conversion will be applied if an utf8 string is detected.
*
* @param {String} str The string to be appended
*
* @return {SparkMD5} The instance itself
*/
SparkMD5.prototype.append = function (str) {
// Converts the string to utf8 bytes if necessary
// Then append as binary
this.appendBinary(toUtf8(str));
return this;
};
/**
* Appends a binary string.
*
* @param {String} contents The binary string to be appended
*
* @return {SparkMD5} The instance itself
*/
SparkMD5.prototype.appendBinary = function (contents) {
this._buff += contents;
this._length += contents.length;
var length = this._buff.length,
i;
for (i = 64; i <= length; i += 64) {
md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));
}
this._buff = this._buff.substring(i - 64);
return this;
};
/**
* Finishes the incremental computation, reseting the internal state and
* returning the result.
*
* @param {Boolean} raw True to get the raw string, false to get the hex string
*
* @return {String} The result
*/
SparkMD5.prototype.end = function (raw) {
var buff = this._buff,
length = buff.length,
i,
tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
ret;
for (i = 0; i < length; i += 1) {
tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);
}
this._finish(tail, length);
ret = hex(this._hash);
if (raw) {
ret = hexToBinaryString(ret);
}
this.reset();
return ret;
};
/**
* Resets the internal state of the computation.
*
* @return {SparkMD5} The instance itself
*/
SparkMD5.prototype.reset = function () {
this._buff = '';
this._length = 0;
this._hash = [1732584193, -271733879, -1732584194, 271733878];
return this;
};
/**
* Gets the internal state of the computation.
*
* @return {Object} The state
*/
SparkMD5.prototype.getState = function () {
return {
buff: this._buff,
length: this._length,
hash: this._hash.slice()
};
};
/**
* Gets the internal state of the computation.
*
* @param {Object} state The state
*
* @return {SparkMD5} The instance itself
*/
SparkMD5.prototype.setState = function (state) {
this._buff = state.buff;
this._length = state.length;
this._hash = state.hash;
return this;
};
/**
* Releases memory used by the incremental buffer and other additional
* resources. If you plan to use the instance again, use reset instead.
*/
SparkMD5.prototype.destroy = function () {
delete this._hash;
delete this._buff;
delete this._length;
};
/**
* Finish the final calculation based on the tail.
*
* @param {Array} tail The tail (will be modified)
* @param {Number} length The length of the remaining buffer
*/
SparkMD5.prototype._finish = function (tail, length) {
var i = length,
tmp,
lo,
hi;
tail[i >> 2] |= 0x80 << ((i % 4) << 3);
if (i > 55) {
md5cycle(this._hash, tail);
for (i = 0; i < 16; i += 1) {
tail[i] = 0;
}
}
// Do the final computation based on the tail and length
// Beware that the final length may not fit in 32 bits so we take care of that
tmp = this._length * 8;
tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);
lo = parseInt(tmp[2], 16);
hi = parseInt(tmp[1], 16) || 0;
tail[14] = lo;
tail[15] = hi;
md5cycle(this._hash, tail);
};
/**
* Performs the md5 hash on a string.
* A conversion will be applied if utf8 string is detected.
*
* @param {String} str The string
* @param {Boolean} [raw] True to get the raw string, false to get the hex string
*
* @return {String} The result
*/
SparkMD5.hash = function (str, raw) {
// Converts the string to utf8 bytes if necessary
// Then compute it using the binary function
return SparkMD5.hashBinary(toUtf8(str), raw);
};
/**
* Performs the md5 hash on a binary string.
*
* @param {String} content The binary string
* @param {Boolean} [raw] True to get the raw string, false to get the hex string
*
* @return {String} The result
*/
SparkMD5.hashBinary = function (content, raw) {
var hash = md51(content),
ret = hex(hash);
return raw ? hexToBinaryString(ret) : ret;
};
// ---------------------------------------------------
/**
* SparkMD5 OOP implementation for array buffers.
*
* Use this class to perform an incremental md5 ONLY for array buffers.
*/
SparkMD5.ArrayBuffer = function () {
// call reset to init the instance
this.reset();
};
/**
* Appends an array buffer.
*
* @param {ArrayBuffer} arr The array to be appended
*
* @return {SparkMD5.ArrayBuffer} The instance itself
*/
SparkMD5.ArrayBuffer.prototype.append = function (arr) {
var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),
length = buff.length,
i;
this._length += arr.byteLength;
for (i = 64; i <= length; i += 64) {
md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));
}
this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);
return this;
};
/**
* Finishes the incremental computation, reseting the internal state and
* returning the result.
*
* @param {Boolean} raw True to get the raw string, false to get the hex string
*
* @return {String} The result
*/
SparkMD5.ArrayBuffer.prototype.end = function (raw) {
var buff = this._buff,
length = buff.length,
tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
i,
ret;
for (i = 0; i < length; i += 1) {
tail[i >> 2] |= buff[i] << ((i % 4) << 3);
}
this._finish(tail, length);
ret = hex(this._hash);
if (raw) {
ret = hexToBinaryString(ret);
}
this.reset();
return ret;
};
/**
* Resets the internal state of the computation.
*
* @return {SparkMD5.ArrayBuffer} The instance itself
*/
SparkMD5.ArrayBuffer.prototype.reset = function () {
this._buff = new Uint8Array(0);
this._length = 0;
this._hash = [1732584193, -271733879, -1732584194, 271733878];
return this;
};
/**
* Gets the internal state of the computation.
*
* @return {Object} The state
*/
SparkMD5.ArrayBuffer.prototype.getState = function () {
var state = SparkMD5.prototype.getState.call(this);
// Convert buffer to a string
state.buff = arrayBuffer2Utf8Str(state.buff);
return state;
};
/**
* Gets the internal state of the computation.
*
* @param {Object} state The state
*
* @return {SparkMD5.ArrayBuffer} The instance itself
*/
SparkMD5.ArrayBuffer.prototype.setState = function (state) {
// Convert string to buffer
state.buff = utf8Str2ArrayBuffer(state.buff, true);
return SparkMD5.prototype.setState.call(this, state);
};
SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;
SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;
/**
* Performs the md5 hash on an array buffer.
*
* @param {ArrayBuffer} arr The array buffer
* @param {Boolean} [raw] True to get the raw string, false to get the hex one
*
* @return {String} The result
*/
SparkMD5.ArrayBuffer.hash = function (arr, raw) {
var hash = md51_array(new Uint8Array(arr)),
ret = hex(hash);
return raw ? hexToBinaryString(ret) : ret;
};
return SparkMD5;
}));

6
hotgo-uniapp/common/vue-i18n.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,102 @@
<template>
<view class="u-flex-1">
<u-checkbox-group :disabled="disabled" @change="change">
<u-checkbox v-model="item.checked" v-for="(item, index) in options.items" :key="index"
:name="item.value">{{item.label}}</u-checkbox>
</u-checkbox-group>
</view>
</template>
<script>
/**
* 复选框组件
* @property {Object} value 用于双向绑定选择框的值,返回选择框的 Value
* @property {Boolean} disabled 是否禁用模式,是否只读模式
* @property {String} dictType 字典类型,从字典里获取,自动设置 items、itemLabel、itemValue
* @property {String} items 列表数据,可接受对象集合,如:[{name: '是', value: '否'}]
* @property {String} itemLabel 指定列表数据中的什么属性名作为 option 的标签名,如 name
* @property {String} itemValue 指定列表数据中的什么属性名作为 option 的 value 值,如 value
* @example <js-select v-model="model.type" dict-type="sys_yes_no"></js-select>
* @description Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* @author ThinkGem
* @version 2021-3-11
*/
export default {
props: {
value: {
type: String,
default: ''
},
disabled: {
type: Boolean,
default: false
},
dictType: {
type: String,
default: ''
},
items: {
type: Array,
default() {
return [];
}
},
itemLabel: {
type: String,
default: 'name'
},
itemValue: {
type: String,
default: 'value'
}
},
data() {
return {
options: {
value: (this.value && this.value.split(',')) || [],
items: this.items
}
};
},
watch: {
value(val, oldVal) {
this.options.value = (val && val.split(',')) || [];
},
items(val, oldVal){
this.options.items = val;
}
},
created() {
this.loadData();
},
methods: {
loadData(){
if (this.dictType != ''){
this.$u.api.dictData({type: this.dictType}).then(res => {
// this.options.items = res;
this.selectValue(res.data);
});
}else{
// this.options.items = this.items;
this.selectValue(this.items);
}
},
selectValue(items){
// 微信小程序,需要延迟下,否则获取不 value 导致无法回显数据
this.$nextTick(() => {
let vals = this.options.value;
for (let i in items){
let item = items[i];
item.checked = vals.includes(item[this.itemValue]);
}
this.options.items = items;
});
},
change(val, name){
this.$emit('input', (val && val.join(',')) || '');
}
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@@ -0,0 +1,69 @@
<template>
<view v-if="showBtn" class="js-lang" @tap="switchLang">
<u-icon size="46" color="warning" :name="lang"></u-icon>
</view>
</template>
<script>
/**
* 语言切换组件
* @property {String} title 顶部导航的标题 i18n 编码
* @property {Boolean} showBtn 是否显示语言切换按钮
* @example <js-lang title="login.title" :showBtn="true"></js-lang>
* @description Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* @author ThinkGem
* @version 2021-3-11
*/
export default {
props: {
title: {
type: String,
default: ''
},
showBtn: {
type: Boolean,
default: false
}
},
computed: {
lang() {
return this.$i18n.locale == 'zh_CN' ? 'zh' : 'en';
}
},
created(){
this.setBarTitle();
},
methods: {
switchLang() {
this.$i18n.locale = this.$i18n.locale == 'zh_CN' ? 'en' : 'zh_CN';
this.$u.vuex('vuex_locale', this.$i18n.locale);
this.$u.api.lang({lang: this.vuex_locale});
this.setBarTitle();
},
setBarTitle (){
uni.setNavigationBarTitle({
title: this.$t(this.title)
});
uni.setTabBarItem({
index: 0,
text: this.$t('nav.msg')
});
uni.setTabBarItem({
index: 1,
text: this.$t('nav.home')
});
uni.setTabBarItem({
index: 2,
text: this.$t('nav.user')
});
}
}
}
</script>
<style lang="scss" scoped>
.js-lang {
position: absolute;
z-index: 10000;
top: 15px;
right: 15px;
}
</style>

View File

@@ -0,0 +1,93 @@
<template>
<view class="u-flex-1">
<u-radio-group v-model="options.value" :disabled="disabled" @change="change">
<u-radio v-for="(item, index) in options.items" :key="index"
:name="item.value"> {{item.label}}</u-radio>
</u-radio-group>
</view>
</template>
<script>
/**
* 单选框组件
* @property {Object} value 用于双向绑定选择框的值,返回选择框的 Value
* @property {Boolean} disabled 是否禁用模式,是否只读模式
* @property {String} dictType 字典类型,从字典里获取,自动设置 items、itemLabel、itemValue
* @property {String} items 列表数据,可接受对象集合,如:[{name: '是', value: '否'}]
* @property {String} itemLabel 指定列表数据中的什么属性名作为 option 的标签名,如 name
* @property {String} itemValue 指定列表数据中的什么属性名作为 option 的 value 值,如 value
* @example <js-radio v-model="model.type" dict-type="sys_yes_no"></js-radio>
* @description Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* @author ThinkGem
* @version 2021-3-11
*/
export default {
props: {
value: {
type: String,
default: ''
},
disabled: {
type: Boolean,
default: false
},
dictType: {
type: String,
default: ''
},
items: {
type: Array,
default() {
return [];
}
},
itemLabel: {
type: String,
default: 'name'
},
itemValue: {
type: String,
default: 'value'
}
},
data() {
return {
options: {
value: this.value,
items: this.items
}
};
},
watch: {
value(val, oldVal) {
this.options.value = val;
},
items(val, oldVal){
this.options.items = val;
}
},
created() {
this.loadData();
},
methods: {
loadData(){
if (this.dictType !== ''){
this.$u.api.dictData({type: this.dictType}).then(res => {
if (typeof res === 'object' && res.result === 'login'){
return;
}
this.options.items = res.data;
});
}else{
this.options.items = this.items;
}
},
change(val){
// console.log(val);
this.$emit('input', val);
}
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@@ -0,0 +1,215 @@
<template>
<view class="u-flex-1">
<u-input :type="disabled?'input':'select'"
v-model="options.label"
:disabled="disabled"
:placeholder="placeholder"
:select-open="options.open"
@click="inputClick"
></u-input>
<u-select :mode="options.mode"
v-model="options.open"
:list="options.items"
:label-name="options.itemLabel"
:value-name="options.itemValue"
:default-value="options.currentIndex"
@confirm="selectConfirm"
style="width: 100%"
></u-select>
</view>
</template>
<script>
/**
* 下拉选择组件
* @property {Object} value 用于双向绑定选择框的值,返回选择框的 Value
* @property {Boolean} disabled 是否禁用模式,是否只读模式
* @property {String} tree 是否为树结构(默认 false
* @property {String} placeholder 选择框的占位符,提示文字
* @property {String} dictType 字典类型,从字典里获取,自动设置 items、itemLabel、itemValue
* @property {String} items 列表数据,可接受对象集合,如:[{name: '是', value: '否'}]
* @property {String} itemLabel 指定列表数据中的什么属性名作为 option 的标签名,如 name
* @property {String} itemValue 指定列表数据中的什么属性名作为 option 的 value 值,如 value
* @example <js-select v-model="model.type" dict-type="sys_yes_no"></js-select>
* @description Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* @author ThinkGem
* @version 2021-3-11
*/
export default {
props: {
value: {
type: String,
default: ''
},
labelValue: {
type: String,
default: ''
},
placeholder: {
type: String,
default: '请选择选项'
},
disabled: {
type: Boolean,
default: false
},
tree: {
type: Boolean,
default: false
},
dictType: {
type: String,
default: ''
},
multiple: {
type: Boolean,
default: false
},
items: {
type: Array,
default() {
return [];
}
},
itemLabel: {
type: String,
default: ''
},
itemValue: {
type: String,
default: ''
},
returnFullName: {
type: Boolean,
default: false
},
returnFullNameSplit: {
type: String,
default: '/'
},
},
data() {
return {
options: {
value: this.value,
label: this.labelValue,
open: false,
mode: 'single-column',
items: this.items,
itemLabel: this.itemLabel || 'name',
itemValue: this.itemValue || (this.tree ? 'id' : 'value'),
currentIndex: [],
indexMap: {}
}
};
},
watch: {
value(val, oldVal) {
this.options.value = val;
},
labelValue(val, oldVal) {
this.options.label = val;
},
items(val, oldVal){
this.setItems(val);
}
},
created() {
this.loadData();
},
methods: {
loadData() {
if (this.dictType != ''){
this.$u.api.dictData({type: this.dictType}).then(res => {
if (typeof res === 'object' && res.result === 'login'){
return;
}
this.setItems(res.data);
});
}else{
this.setItems(this.items);
}
},
setItems(res){
if (this.tree){
this.options.mode = 'mutil-column-auto';
res = this.convertTree(res);
}
this.options.items = res;
this.selectValue();
},
selectValue() {
// 微信小程序,需要延迟下,否则获取不 value 导致无法回显数据
this.$nextTick(() => {
if (!this.options.value) {
return;
}
for (let i in this.options.items){
let item = this.options.items[i];
this.options.indexMap[item[this.options.itemValue]] = Number(i);
if (item[this.options.itemValue] == this.options.value){
// this.options.value = item[this.options.itemValue];
this.options.label = item[this.options.itemLabel];
if (!this.tree){
this.options.currentIndex = [this.options.indexMap[this.options.value]];
}
}
}
});
},
convertTree(data) {
let i, l, key = "id", parentKey = "pId", childKey = "children";
if (Object.prototype.toString.apply(data) === "[object Array]") {
let treeData = [], map = [];
for (i=0, l=data.length; i<l; i++) {
map[data[i][key]] = data[i];
}
for (i=0, l=data.length; i<l; i++) {
if (map[data[i][parentKey]] && data[i][key] != data[i][parentKey]) {
if (!map[data[i][parentKey]][childKey]){
map[data[i][parentKey]][childKey] = [];
}
map[data[i][parentKey]][childKey].push(data[i]);
} else {
treeData.push(data[i]);
}
}
return treeData;
}else {
return [data];
}
},
inputClick() {
if (!this.disabled){
this.options.open = true;
}
},
selectConfirm(items) {
let values = [], labels = [], currentIndexes = [];
for (let i in items){
let item = items[i];
values.push(String(item.value).replace(/^u_/g,''));
labels.push(String(item.label));
if (!this.tree){
currentIndexes.push(this.options.indexMap[item.value])
}
}
this.options.value = values.length > 0 ? values[values.length-1] : '';
if (this.returnFullName){
this.options.label = labels.join(this.returnFullNameSplit);
}else{
this.options.label = labels.length > 0 ? labels[labels.length-1] : '';
}
if (!this.tree){
this.options.currentIndex = currentIndexes;
}
//console.log(this.options.value, this.options.label)
this.$emit('input', this.options.value);
this.$emit('label-input', this.options.label);
this.$emit('confirm', this.options.value, this.options.label);
}
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@@ -0,0 +1,278 @@
<template>
<view class="u-flex-1">
<u-upload width="160" height="160" ref="uUpload"
:action="options.action"
:header="options.header"
:form-data="options.formData"
:name="options.name"
:max-count="maxCount"
:auto-upload="true"
:deletable="deletable"
:before-upload="beforeUpload"
@on-success="uploadSuccess"
@on-uploaded="uploadUploaded"
:before-remove="beforeRemove"
@on-remove="uploadRemove"
></u-upload>
</view>
</template>
<script>
import SparkMD5 from '@/common/spark-md5.js';
/**
* 文件上传组件组件
* @property {Object} value 使用 v-model="this.model" 指定表单的 model 对象(存放文件上传编号信息)
* @property {String} bizKey 业务表的主键值(与附件关联的业务数据)【可选】如果不设置,则获取 value.id 作为主键
* @property {String} bizType 业务表的上传类型全网唯一推荐格式实体名_上传类型例如意见反馈图片appComment_image
* @property {String} uploadType 上传文件类型image目前移动端仅支持上传图片
* @property {String} imageMaxWidth 图片压缩最大宽度uploadType为image生效设置-1代表不做任何处理
* @property {String} imageMaxHeight 图片压缩最大宽度uploadType为image生效设置-1代表不做任何处理
* @property {String} maxCount 最大上传个数,默认 52 个,如果设置为 0 可以当做【只读模式】使用
* @example <js-uploadfile v-model="model.otherData" :biz-key="model.id" biz-type="testData_image"></js-uploadfile>
* @description Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* @author ThinkGem
* @version 2021-3-11
*/
export default {
props: {
value: {
type: Object,
default() {
return {}
}
},
bizKey: {
type: String,
default: ''
},
bizType: {
type: String,
default: 'images'
},
uploadType: {
type: String,
default: 'image'
},
imageMaxWidth: {
type: [String, Number],
default: 1024
},
imageMaxHeight: {
type: [String, Number],
default: 768
},
maxCount: {
type: [String, Number],
default: 52
}
},
data() {
return {
options: {
value: {},
action: '',
header: {},
formData: {
fileMd5: '',
fileName: '',
bizKey: this.bizKey || (this.value && this.value.id) || '',
bizType: this.bizType,
uploadType: this.uploadType,
imageMaxWidth: this.imageMaxWidth,
imageMaxHeight: this.imageMaxHeight
},
name: 'file',
// 文件上传的 id 数组
fileUploadIds: [],
// 文件删除的 id 数组
fileUploadDelIds: []
},
deletable: true
};
},
watch: {
value(val, oldVal) {
this.options.value = val;
},
maxCount(val, oldVal) {
this.refreshStatus();
},
bizKey(val, oldVal) {
this.options.formData.bizKey = val;
this.loadData();
}
},
created() {
this.refreshStatus();
this.options.action = this.vuex_config.baseUrl + this.vuex_config.adminPath + '/file/upload';
this.options.formData = Object.assign(this.options.formData, this.formData);
this.loadData();
},
methods: {
// 刷新是否只读状态
refreshStatus(){
if (this.maxCount <= 0){
this.deletable = false;
}
},
// 已上传的文件回显到上传组件
loadData(){
if (this.options.formData.bizKey != ''){
let baseUrl = this.vuex_config.baseUrl;
let adminPath = this.vuex_config.adminPath;
this.$u.post(adminPath + '/file/fileList', {
bizKey: this.options.formData.bizKey,
bizType: this.options.formData.bizType,
}).then(res => {
let lists = [];
if (!(typeof res === 'object' && (res.result === 'login' || res.result === 'false'))){
for (let i in res){
let f = res[i];
lists.push({
url: baseUrl + f.fileUrl,
fileUploadId: f.id,
progress: 100,
error: false
});
}
}
// console.log(lists)
this.$refs.uUpload.lists = lists;
this.uploadRefreshIds(lists);
});
}
},
// 上传之前,验证秒传、是否继续上传等
beforeUpload(index, lists) {
let self = this;
let item = lists[index];
let upload = this.upload;
let formData = this.options.formData;
let baseUrl = this.vuex_config.baseUrl;
let adminPath = this.vuex_config.adminPath;
self.$u.http.interceptor.request(this.options);
return new Promise((resolve, reject) => {
try{
function uploadFile(arrayBuffer){
let buffer = arrayBuffer;
let size = 10 * 1024 * 1024;
let spark = new SparkMD5.ArrayBuffer();
if (buffer.byteLength > size){
spark.append(buffer.slice(0, size));;
}else{
spark.append(buffer);
}
formData.fileEntityId = '';
formData.fileUploadId = '';
formData.fileMd5 = spark.end();
formData.fileName = item.file.name;
// console.log('formData' + JSON.stringify(formData));
self.$u.post(adminPath + '/file/upload', formData).then(res => {
// console.log(res)
// 文件已经上传,启用秒传
if (res.result == 'true' && res.fileUpload){
item.fileUploadId = res.fileUpload.id;
item.progress = 100;
item.error = false;
reject(res);
}
// 文件未上传过,继续上传文件
else if (res.fileUploadId && res.fileEntityId){
formData.fileUploadId = res.fileUploadId;
formData.fileEntityId = res.fileEntityId;
item.fileUploadId = res.fileUploadId;
resolve();
}
// 未知错误,提示服务端返回的信息
else {
uni.showModal({title: '提示', content: res.message });
reject(res);
}
}).catch(err => {
console.error(err);
reject(err);
})
}
// #ifdef APP-PLUS
plus.io.requestFileSystem(plus.io.PRIVATE_WWW, function(fs){
fs.root.getFile(item.url, {create: false}, function(fileEntry){
fileEntry.file(function(file){
// console.log("getFile:" + JSON.stringify(file))
item.file.name = file.name;
var fileReader = new plus.io.FileReader();
fileReader.readAsText(file, 'utf-8');
fileReader.onloadend = function(evt) {
uploadFile(evt.target.result);
}
fileReader.onerror = function(error) {
reject(error);
}
}, reject);
}, reject);
} );
// #endif
// #ifndef APP-PLUS
uni.request({
url: item.url,
responseType: 'arraybuffer',
complete: res => {
// console.log(res)
if (res.statusCode == 200) {
uploadFile(res.data);
}else{
reject(res);
}
}
})
// #endif
}catch(err){
console.error(err);
reject(err);
}
})
},
// 上传成功一个,就写进 fileUploadIds
uploadSuccess(data, index, lists, name){
let item = lists[index];
this.options.fileUploadIds.push(item.fileUploadId);
},
// 全部上传后,刷新 fileUploadIds、fileUploadDelIds
uploadUploaded(lists, name) {
this.uploadRefreshIds(lists);
},
// 移除之前获取删除的 fileUploadId写进 fileUploadDelIds
beforeRemove(index, lists){
let item = lists[index];
if (item.fileUploadId){
this.options.fileUploadDelIds.push(item.fileUploadId);
}
return true;
},
// 移除之后,刷新 fileUploadIds、fileUploadDelIds
uploadRemove(index, lists){
this.uploadRefreshIds(lists);
},
// 刷新 fileUploadIds、fileUploadDelIds
uploadRefreshIds(lists, name) {
let fileUploadIds = [];
lists.forEach(item => {
if (item.fileUploadId && item.progress == 100){
fileUploadIds.push(item.fileUploadId);
}
});
this.options.fileUploadIds = fileUploadIds;
// console.log('fileUploadIds', this.options.fileUploadIds)
// console.log('fileUploadDelIds', this.options.fileUploadDelIds)
// 将上传和删除的 id 回传给 model
let formData = this.options.formData;
let fileParams = this.options.value || {};
fileParams[formData.bizType] = this.options.fileUploadIds.join(',');
fileParams[formData.bizType+'__del'] = this.options.fileUploadDelIds.join(',');
this.options.value = fileParams;
this.$emit('input', Object.assign(this.options.value, this.value));
},
}
}
</script>
<style lang="scss" scoped>
</style>

50
hotgo-uniapp/h5.html Normal file
View File

@@ -0,0 +1,50 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="keywords" content="PoweredByJeeSiteV4.0"/>
<meta name="description" content="PoweredByJeeSiteV4.0"/>
<link rel="shortcut icon" type="image/x-icon" href="<%= BASE_URL %>static/jeesite/favicon.png">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title><%= htmlWebpackPlugin.options.title %></title>
<script>
window.onresize = function () {
if (document.documentElement.clientWidth >= 768) {
window.location.href = '<%= BASE_URL %>static/#/';
}
};
window.onresize();
</script>
<!-- 正式发布的时候使用,开发期间不启用。↓ -->
<script src="<%= BASE_URL %>static/common/js/touch-emulator.js"></script>
<script>
TouchEmulator();
</script>
<style>
::-webkit-scrollbar{
display: none;
}
</style>
<!-- 正式发布的时候使用,开发期间不启用。↑ -->
<script>
document.addEventListener('DOMContentLoaded', function() {
document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
})
</script>
<link rel="stylesheet" href="<%= BASE_URL %>static/index.css" />
</head>
<body>
<!-- 该文件为 H5 平台的模板 HTML并非应用入口。 -->
<!-- 请勿在此文件编写页面代码或直接运行此文件。 -->
<!-- 详见文档https://uniapp.dcloud.io/collocation/manifest?id=h5-template -->
<noscript>
<strong>本站点必须要开启JavaScript才能运行</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
<script>
/*BAIDU_STAT*/
</script>
</body>
</html>

60
hotgo-uniapp/main.js Normal file
View File

@@ -0,0 +1,60 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
import Vue from 'vue';
import App from './App';
Vue.config.productionTip = false;
App.mpType = 'app';
// 引入全局 uView 框架
import uView from 'uview-ui';
Vue.use(uView);
// 全局存储 vuex 的封装
import store from '@/store';
// 引入 uView 提供的对 vuex 的简写法文件
let vuexStore = require('@/store/$u.mixin.js');
Vue.mixin(vuexStore);
// 引入 uView 对小程序分享的 mixin 封装
let mpShare = require('uview-ui/libs/mixin/mpShare.js');
Vue.mixin(mpShare);
// Vue i18n 国际化
import VueI18n from '@/common/vue-i18n.min.js';
Vue.use(VueI18n);
// i18n 部分的配置,引入语言包,注意路径
import lang_zh_CN from '@/common/locales/zh_CN.js';
import lang_en from '@/common/locales/en.js';
const i18n = new VueI18n({
// 默认语言
locale: 'zh_CN',
// 引入语言文件
messages: {
'zh_CN': lang_zh_CN,
'en': lang_en,
}
});
// 由于微信小程序的运行机制问题需声明如下一行H5和APP非必填
Vue.prototype._i18n = i18n;
const app = new Vue({
i18n,
store,
...App
});
// http 拦截器,将此部分放在 new Vue() 和 app.$mount() 之间,才能 App.vue 中正常使用
import httpInterceptor from '@/common/http.interceptor.js';
Vue.use(httpInterceptor, app);
// http 接口 API 抽离,免于写 url 或者一些固定的参数
import httpApi from '@/common/http.api.js';
Vue.use(httpApi, app);
app.$mount();

158
hotgo-uniapp/manifest.json Normal file
View File

@@ -0,0 +1,158 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
{
"name": "JeeSite",
"appid": "__UNI__841DCAE",
"description": "JeeSite快速开发平台",
"versionName": "4.3.2",
"versionCode": "100",
"transformPx": false,
"app-plus": {
// APP-VUE分包可提APP升启动速度2.7.12开始支持,兼容微信小程序分包方案,默认关闭
"optimization": {
"subPackages": true
},
"safearea": {
"bottom": {
"offset": "none"
}
},
"splashscreen": {
"alwaysShowBeforeRender": true,
"waiting": true,
"autoclose": true,
"delay": 0
},
"usingComponents": true,
"nvueCompiler": "uni-app",
"compilerVersion": 3,
"modules": {},
"distribute": {
"android": {
"permissions": [
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
],
"abiFilters": ["armeabi-v7a", "arm64-v8a"]
},
"ios": {},
"sdkConfigs": {
"ad": {},
"oauth": {}
},
"icons": {
"android": {
"hdpi": "unpackage/res/icons/72x72.png",
"xhdpi": "unpackage/res/icons/96x96.png",
"xxhdpi": "unpackage/res/icons/144x144.png",
"xxxhdpi": "unpackage/res/icons/192x192.png"
},
"ios": {
"appstore": "unpackage/res/icons/1024x1024.png",
"ipad": {
"app": "unpackage/res/icons/76x76.png",
"app@2x": "unpackage/res/icons/152x152.png",
"notification": "unpackage/res/icons/20x20.png",
"notification@2x": "unpackage/res/icons/40x40.png",
"proapp@2x": "unpackage/res/icons/167x167.png",
"settings": "unpackage/res/icons/29x29.png",
"settings@2x": "unpackage/res/icons/58x58.png",
"spotlight": "unpackage/res/icons/40x40.png",
"spotlight@2x": "unpackage/res/icons/80x80.png"
},
"iphone": {
"app@2x": "unpackage/res/icons/120x120.png",
"app@3x": "unpackage/res/icons/180x180.png",
"notification@2x": "unpackage/res/icons/40x40.png",
"notification@3x": "unpackage/res/icons/60x60.png",
"settings@2x": "unpackage/res/icons/58x58.png",
"settings@3x": "unpackage/res/icons/87x87.png",
"spotlight@2x": "unpackage/res/icons/80x80.png",
"spotlight@3x": "unpackage/res/icons/120x120.png"
}
}
},
"splashscreen": {
"androidStyle": "common"
}
}
},
"quickapp": {},
"mp-weixin": {
"appid": "wx335f34af8ccb4131",
"setting": {
"urlCheck": true,
"es6": false,
"minified": true,
"postcss": true
},
"optimization": {
"subPackages": true
},
"usingComponents": true
},
"mp-alipay": {
"usingComponents": true,
"component2": true
},
"mp-qq": {
"optimization": {
"subPackages": true
},
"appid": ""
},
"mp-baidu": {
"usingComponents": true,
"appid": ""
},
"mp-toutiao": {
"usingComponents": true,
"appid": ""
},
"h5": {
"devServer": {
"port": 8080, //这边填当前项目的编译端口,编译时直接使用此端口,也是代理端口
"disableHostCheck": true, //vue关闭主机检查
"proxy": {
"/api": { //代理API域名的路径
"target": "http://localhost:8299/api", //代理API域名地址+端口+路径
"changeOrigin": true, //是否跨域
"secure": false, //ssl如果是https要更改为true
"pathRewrite":{"^/api":""} //代理请求时的重写路径,和"/api2"、"/api2".target保持一致即可
}
}
},
"template": "h5.html",
"router": {
"mode": "hash",
"base": "/app"
},
"optimization": {
"treeShaking": {
"enable": false
}
},
"title": "JeeSite",
"domain": "/app"
}
}

13
hotgo-uniapp/package-lock.json generated Normal file
View File

@@ -0,0 +1,13 @@
{
"name": "JeeSite4",
"version": "4.3.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"vue-i18n": {
"version": "8.20.0",
"resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.20.0.tgz",
"integrity": "sha512-ZiAOoeR4d/JtKpbjipx3I80ey7cYG1ki5gQ7HwzWm4YFio9brA15BEYHjalEoBaEfzF5OBEZP+Y2MvAaWnyXXg=="
}
}
}

26
hotgo-uniapp/package.json Normal file
View File

@@ -0,0 +1,26 @@
{
"name": "JeeSite4",
"version": "4.3.0",
"description": "JeeSite4 移动端快速开发框架",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://gitee.com/thinkgem/jeesite4-uniapp.git"
},
"keywords": [
"JeeSite",
"快速开发平台"
],
"author": "ThinkGem",
"license": "MIT",
"bugs": {
"url": "https://github.com/thinkgem/jeesite4-uniapp/issues"
},
"homepage": "https://github.com/thinkgem/jeesite4-uniapp#readme",
"dependencies": {
"vue-i18n": "^8.20.0"
}
}

160
hotgo-uniapp/pages.json Normal file
View File

@@ -0,0 +1,160 @@
{
"easycom": {
"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
},
"pages": [
/* */
{
"path": "pages/sys/login/index",
"style": {
"navigationBarTitleText": "登录"
}
},
{
"path": "pages/sys/login/forget",
"style": {
"navigationBarTitleText": "忘记密码"
}
},
{
"path": "pages/sys/login/reg",
"style": {
"navigationBarTitleText": "注册账号"
}
},
/* */
{
"path": "pages/sys/home/index",
"style": {
"navigationBarTitleText": "工作台"
}
},
/* */
{
"path": "pages/sys/user/index",
"style": {
"navigationBarTitleText": "用户中心",
"backgroundColor": "#f8f8f8",
"navigationBarBackgroundColor":"#f8f8f8"
}
},
{
"path": "pages/sys/user/info",
"style": {
"navigationBarTitleText": "个人信息"
}
},
{
"path": "uview-ui/components/u-avatar-cropper/u-avatar-cropper",
"style": {
"navigationBarTitleText": "头像裁剪",
"navigationBarBackgroundColor": "#000000"
}
},
{
"path": "pages/sys/user/help",
"style": {
"navigationBarTitleText": "帮助中心"
}
},
{
"path": "pages/sys/user/pwd",
"style": {
"navigationBarTitleText": "修改密码"
}
},
{
"path": "pages/sys/user/setting",
"style": {
"navigationBarTitleText": "系统设置"
}
},
{
"path": "pages/sys/user/comment",
"style": {
"navigationBarTitleText": "意见反馈"
}
},
{
"path": "pages/sys/user/about",
"style": {
"navigationBarTitleText": "关于我们"
}
},
/* */
{
"path": "pages/sys/msg/index",
"style": {
"navigationBarTitleText": "消息提醒"
}
},
{
"path": "pages/sys/msg/form",
"style": {
"navigationBarTitleText": "查看详情"
}
},
/* */
{
"path": "pages/testData/form",
"style": {
"navigationBarTitleText": "新增编辑"
}
},
{
"path": "pages/testData/index",
"style": {
"navigationBarTitleText": "增删改查"
}
},
/* Common */
{
"path": "pages/common/webview",
"style": {
"navigationBarTitleText": "浏览网页"
}
}
],
"subPackages": [
],
"preloadRule": {
},
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "JeeSite",
"navigationBarBackgroundColor": "#f8f8f8"
},
"tabBar": {
"color": "#909399",
"selectedColor": "#303133",
"backgroundColor": "#ffffff",
"borderStyle": "white",
"list": [{
"pagePath": "pages/sys/msg/index",
"iconPath": "static/jeesite/tabbar/msg_1.png",
"selectedIconPath": "static/jeesite/tabbar/msg_2.png",
"text": "消息"
},
{
"pagePath": "pages/sys/home/index",
"iconPath": "static/jeesite/tabbar/home_1.png",
"selectedIconPath": "static/jeesite/tabbar/home_2.png",
"text": "工作台"
},
{
"pagePath": "pages/sys/user/index",
"iconPath": "static/jeesite/tabbar/my_1.png",
"selectedIconPath": "static/jeesite/tabbar/my_2.png",
"text": "我的"
}
]
}
}

View File

@@ -0,0 +1,121 @@
/*!
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* @author ThinkGem
* @version 2020-9-1
*/
.u-btn {
&--info {
color: #ffffff;
border-color: #01abb4;
background-color: #01abb4;
}
&--purple {
color: #ffffff;
border-color: #5d5fe7;
background-color: #5d5fe7;
}
}
.u-cell-box {
.u-cell {
font-size: 30rpx;
}
.u-cell_title {
font-size: 30rpx;
}
.u-cell__left-icon-wrap {
margin-right: 18rpx;
}
}
.search{
padding: 20rpx 20rpx 0;
background: #f8f8f8;
height: 105rpx;
}
.scroll-list {
height: calc(100vh - var(--window-top) - var(--window-bottom) - 105rpx); // 105rpx 为 .search 的高度
width: 100%;
.loadmore {
padding: 30rpx;
}
}
.box {
padding-bottom: 10rpx;
.item {
margin: 0 20rpx 20rpx;
padding: 8rpx 20rpx;
border-radius: 20rpx;
box-sizing: border-box;
background-color: #fff;
font-size: 28rpx;
.title {
display: flex;
justify-content: space-between;
background-color: #fff;
padding-left: 15rpx;
align-items: center;
.text {
margin: 0 20rpx;
font-size: 35rpx;
font-weight: bold;
}
}
}
}
.list {
.u-cell-item-box {
.u-swipe-content {
width: 750rpx;
}
.u-cell_title {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
min-width: 655rpx;
}
.u-border-bottom:after {
border-bottom-width: 0;
}
}
}
.form {
display: flex;
flex-direction: column;
padding: 20rpx 30rpx;
.u-cell-item-box {
border-radius: 20rpx;
}
}
.form-footer {
display: flex;
margin: 10rpx;
padding-bottom: 30rpx;
.btn {
flex: 1;
margin: 20rpx;
margin-bottom: 10rpx;
}
}

View File

@@ -0,0 +1,33 @@
<template>
<view>
<web-view :webview-styles="webviewStyles" :src="webviewUrl"></web-view>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
data() {
return {
webviewUrl: '',
webviewStyles: {
progress: {
color: '#FF7200'
}
}
};
},
onLoad(params) {
this.webviewUrl = decodeURIComponent(params.url);
if (params.title != ''){
uni.setNavigationBarTitle({
title: params.title
})
}
}
};
</script>
<style lang="scss">
</style>

View File

@@ -0,0 +1,22 @@
/*!
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* @author ThinkGem
* @version 2020-9-1
*/
.toolbar {
padding-top: 5px;
background-color: #fff;
}
.grid {
.grid-icon {
color: #666;
}
.grid-text {
font-size: 32rpx;
padding: 15rpx;
}
}

View File

@@ -0,0 +1,225 @@
<template>
<view class="wrap">
<js-lang title="home.title" :showBtn="true"></js-lang>
<u-swiper :height="300" :list="imgList" :title="false" @click="imgListClick"></u-swiper>
<view class="toolbar u-m-b-20">
<u-grid class="grid" :col="3" :border="false">
<u-grid-item :index="0" @click="navTo('/pages/bpm/myTaskTodo')">
<u-badge :count="todoCount"></u-badge>
<u-icon class="grid-icon" name="clock" :size="80" :style="{ color: '#ea9a44' }"></u-icon>
<view class="grid-text">待办任务</view>
</u-grid-item>
<u-grid-item :index="1" @click="navTo('/pages/bpm/myTaskHistory')">
<u-icon class="grid-icon" name="checkmark-circle" :size="80" :style="{ color: '#47cb66' }"></u-icon>
<view class="grid-text">已办任务</view>
</u-grid-item>
<u-grid-item :index="2" @click="navTo('/pages/bpm/myRuntime')">
<u-icon class="grid-icon" name="order" :size="80" :style="{ color: '#5a98ea' }"></u-icon>
<view class="grid-text">我相关的</view>
</u-grid-item>
</u-grid>
</view>
<u-collapse class="box u-p-b-5" :accordion="false" :arrow="true">
<view class="item" v-for="(menu, index) in menuList" :key="menu.menuCode">
<u-collapse-item :open="true">
<view class="title" slot="title">
<u-icon :name="menu.menuIcon != '' ? menu.menuIcon : 'home'" :size="40"
:style="{ color: menu.menuColor != '' ? menu.menuColor : '#666' }"></u-icon>
<view class="text" :style="{ color: menu.menuColor != '' ? menu.menuColor : '#666' }"
>{{menu.menuName}}</view>
</view>
<u-grid class="grid u-m-t-20" :col="3" :border="false">
<u-grid-item v-for="(child, index2) in menu.childList" :key="child.menuCode" @click="navTo(child.url)">
<u-icon class="grid-icon" :name="child.menuIcon != '' ? child.menuIcon : 'order'" :size="80"
:style="{ color: child.menuColor != '' ? child.menuColor : '#666' }"></u-icon>
<view class="grid-text" :style="{ color: child.menuColor != '' ? child.menuColor : '#666' }"
>{{child.menuName}}</view>
</u-grid-item>
</u-grid>
</u-collapse-item>
</view>
</u-collapse>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
data() {
return {
imgList: [
{image: '/static/jeesite/banner/1.svg'},
{image: '/static/jeesite/banner/2.svg'},
{image: '/static/jeesite/banner/3.svg'}
],
todoCount: 0,
menuList: [
{
menuCode: 'a-1',
menuName: '增删改查',
menuIcon: 'file-text',
menuColor: '',
url: '',
childList: [
{
menuCode: 'a13',
menuName: '列表',
menuIcon: 'thumb-up',
menuColor: '',
url: '/pages/testData/index',
},
{
menuCode: 'a11',
menuName: '新增',
menuIcon: 'plus-circle',
menuColor: '',
url: '/pages/testData/form',
},
{
menuCode: 'a10',
menuName: '请假',
menuIcon: 'calendar',
menuColor: '',
url: '/pages/oa/oaLeave/index',
},
]
},
{
menuCode: 'a',
menuName: '公文管理',
menuIcon: 'home',
menuColor: '#919328',
url: '',
childList: [
{
menuCode: 'a1',
menuName: '收文',
menuIcon: 'email',
menuColor: '#919328',
url: '/pages/testData/form',
},
{
menuCode: 'a2',
menuName: '发文',
menuIcon: 'bookmark',
menuColor: '#919328',
url: '/pages/testData/form',
},
{
menuCode: 'a3',
menuName: '查询',
menuIcon: 'search',
menuColor: '#919328',
url: '/pages/testData/index',
}
]
},
{
menuCode: 'a-2',
menuName: '功能列表',
menuIcon: '',
menuColor: '#0d9311',
url: '',
childList: [
{
menuCode: 'a21',
menuName: '找回密码',
menuIcon: '',
menuColor: '#0d9311',
url: '/pages/sys/login/forget',
},
{
menuCode: 'a22',
menuName: '注册用户',
menuIcon: '',
menuColor: '#0d9311',
url: '/pages/sys/login/reg',
},
{
menuCode: 'a23',
menuName: '个人资料',
menuIcon: '',
menuColor: '#0d9311',
url: '/pages/sys/user/info',
},{
menuCode: 'a24',
menuName: '关于我们',
menuIcon: '',
menuColor: '#0d9311',
url: '/pages/sys/user/about',
},
{
menuCode: 'a25',
menuName: '修改密码',
menuIcon: '',
menuColor: '#0d9311',
url: '/pages/sys/user/pwd',
},
{
menuCode: 'a26',
menuName: '意见反馈',
menuIcon: '',
menuColor: '#0d9311',
url: '/pages/sys/user/comment',
},
{
menuCode: 'a27',
menuName: '系统设置',
menuIcon: '',
menuColor: '#0d9311',
url: '/pages/sys/user/setting',
},
{
menuCode: 'a28',
menuName: '列表演示',
menuIcon: '',
menuColor: '#0d9311',
url: '/pages/testData/index',
},
{
menuCode: 'a29',
menuName: '表单演示',
menuIcon: '',
menuColor: '#0d9311',
url: '/pages/testData/form',
}
]
},
],
};
},
onLoad() {
//this.refreshCount();
},
onShow() {
this.refreshCount();
},
methods: {
navTo(url) {
uni.navigateTo({
url: url
});
},
refreshCount() {
this.todoCount = 3;
},
imgListClick(index) {
console.log(`点击了第${index + 1}页图片`)
},
itemClick(index) {
console.log(index);
}
}
};
</script>
<style lang="scss">
@import 'index.scss';
page {
background-color: #f8f8f8;
}
</style>

View File

@@ -0,0 +1,144 @@
<template>
<view class="wrap">
<view class="list">
<view class="list-call">
<u-icon class="u-icon" size="40" name="account"></u-icon>
<input class="u-input" type="text" v-model="loginCode" maxlength="32" placeholder="请输入账号" />
</view>
<view class="list-call">
<u-icon class="u-icon" size="40" name="lock"></u-icon>
<input class="u-input" type="text" v-model="password" maxlength="32" placeholder="请输入新密码" :password="!showPassword" />
<image class="u-icon-right" :src="'/static/jeesite/login/eye_' + (showPassword ? 'open' : 'close') + '.png'" @click="showPass()"></image>
</view>
<view class="list-call">
<u-icon class="u-icon" size="40" name="bookmark"></u-icon>
<input class="u-input" type="text" v-model="validCode" maxlength="4" placeholder="图片验证码" />
<u-image class="img-valid-code" width="300rpx" height="90rpx" :src="imgValidCodeSrc" @click="refreshImgValidCode()"></u-image>
</view>
<view class="list-call">
<u-icon class="u-icon" size="40" name="coupon"></u-icon>
<input class="u-input" type="text" v-model="fpValidCode" maxlength="6" placeholder="手机验证码" />
<u-verification-code ref="uCode" :seconds="seconds" @change="codeChange"></u-verification-code>
<view class="btn-valid-code" :class="{ 'btn-valid-codes': tips != '获取验证码' && tips != '重新获取' }"
hover-class="btn-valid-code-hover" @click="getValidCode()">{{tips}}</view>
</view>
</view>
<view class="button" hover-class="button-hover" @click="submit()"><text>修改密码</text></view>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
data() {
return {
loginCode: '',
password: '',
validCode: '',
fpValidCode: '',
showPassword: false,
imgValidCodeSrc: null,
tips: '获取验证码',
seconds: 60
};
},
onLoad() {
this.refreshImgValidCode();
},
methods: {
showPass() {
this.showPassword = !this.showPassword;
},
refreshImgValidCode(e) {
if (this.vuex_token == '') {
this.$u.api.index().then(res => {
this.imgValidCodeSrc = this.vuex_config.baseUrl + '/validCode?__sid='
+ res.sessionid + '&t=' + new Date().getTime();
});
} else {
this.imgValidCodeSrc = this.vuex_config.baseUrl + '/validCode?__sid='
+ this.vuex_token + '&t=' + new Date().getTime();
}
this.validCode = '';
},
codeChange(text) {
this.tips = text;
},
formValid() {
if (this.loginCode.length == 0) {
this.$u.toast('请输入账号');
return false;
}
if (this.password.length == 0) {
this.$u.toast('请输入新密码');
return false;
}
if (this.validCode.length == 0) {
this.$u.toast('请输入图片验证码');
return false;
}
return true;
},
getValidCode() {
if (!this.formValid()) {
return;
}
if (this.$refs.uCode.canGetCode) {
this.$u.api.validCode({
validCode: this.validCode
})
.then(res => {
if (res !== 'true') {
this.$u.toast('图片验证码错误');
return;
}
this.$u.api.getFpValidCode({
loginCode: this.loginCode,
validCode: this.validCode,
validType: 'mobile'
})
.then(res => {
this.$u.toast(res.message, 3000);
if (res.result == 'false') {
this.refreshImgValidCode();
}
});
this.$refs.uCode.start();
});
}
},
submit() {
if (!this.formValid()) {
return;
}
if (this.fpValidCode.length == 0) {
this.$u.toast('请输入手机验证码');
return false;
}
this.$u.api.savePwdByValidCode({
loginCode: this.loginCode,
fpValidCode: this.fpValidCode,
password: this.password
})
.then(res => {
uni.showModal({
title: '提示',
content: res.message,
showCancel: false,
success: function () {
if (res.result == 'true') {
uni.reLaunch({
url: '/pages/sys/login/index'
});
}
}
});
});
}
}
};
</script>
<style lang="scss">
@import 'index.scss';
</style>

View File

@@ -0,0 +1,81 @@
/*!
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* @author ThinkGem
* @version 2020-9-1
*/
.wrap {
display: flex;
flex-direction: column;
justify-content: center;
}
.list {
display: flex;
flex-direction: column;
padding: 40rpx 70rpx 40rpx 70rpx;
}
.list-call {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
padding-top: 10rpx;
height: 120rpx;
font-weight: normal;
color: #333333;
border-bottom: 0.5px solid #e2e2e2;
}
.list-call .u-input {
flex: 1;
font-size: 39rpx;
text-align: left;
margin-left: 16rpx;
}
.list-call .u-icon-right {
color: #aaaaaa;
width: 50rpx;
height: 40rpx;
}
.button {
color: #ffffff;
font-size: 39rpx;
width: 470rpx;
height: 100rpx;
background: linear-gradient(-90deg, rgba(72, 156, 230, 1), rgba(15, 168, 250, 1));
box-shadow: 0rpx 0rpx 13rpx 0rpx rgba(15, 168, 250, 0.4);
border-radius: 50rpx;
line-height: 100rpx;
text-align: center;
margin: 50rpx auto 0;
}
.button-hover {
background: linear-gradient(-90deg, rgba(72, 156, 230, 0.8), rgba(15, 168, 250, 0.8));
}
.img-valid-code img {
width: 30rpx;
heigth: 50rpx;
}
.btn-valid-code {
color: #da7918;
font-size: 40rpx;
line-height: 60rpx;
padding: 0 35rpx;
border: 1rpx solid #da7918;
border-radius: 50rpx;
}
.btn-valid-code-hover {
background-color: #f3f3f3;
}
.btn-valid-codes {
color: #999999 !important;
border: 1rpx solid #999999;
}

View File

@@ -0,0 +1,192 @@
<template>
<view class="wrap">
<js-lang title="login.title" :showBtn="true"></js-lang>
<view class="logo">
<image src="/static/jeesite/logo200.png"></image>
</view>
<view class="list">
<view class="list-call">
<u-icon class="u-icon" size="40" name="account"></u-icon>
<input class="u-input" type="text" v-model="username" maxlength="32"
:placeholder="$t('login.placeholderAccount')"/>
<u-checkbox v-model="remember" active-color="#69cbff">{{$t('login.autoLogin')}}</u-checkbox>
</view>
<view class="list-call">
<u-icon class="u-icon" size="40" name="lock"></u-icon>
<input class="u-input" type="text" v-model="password" maxlength="32"
:placeholder="$t('login.placeholderPassword')" :password="!showPassword"/>
<image class="u-icon-right"
:src="'/static/jeesite/login/eye_' + (showPassword ? 'open' : 'close') + '.png'"
@click="showPass()"></image>
</view>
<view class="list-call" v-if="isValidCodeLogin">
<u-icon class="u-icon" size="40" name="coupon"></u-icon>
<input class="u-input" type="text" v-model="validCode" maxlength="4" placeholder="验证码"/>
<u-image class="img-valid-code" width="300rpx" height="90rpx" :src="imgValidCodeSrc"
@click="refreshImgValidCode()"></u-image>
</view>
</view>
<view class="button" hover-class="button-hover" @click="submit()">
<text>{{$t('login.loginButton')}}</text>
</view>
<view class="footer">
<navigator url="forget" open-type="navigate">{{$t('login.forget')}}</navigator>
<text>|</text>
<navigator url="reg" open-type="navigate">{{$t('login.reg')}}</navigator>
</view>
<view class="oauth2">
<u-icon class="u-icon" size="120" color="#00d969" name="weixin-circle-fill" @click="wxLogin"></u-icon>
<u-icon class="u-icon" size="120" color="#4fa1e8" name="qq-circle-fill" @click="qqLogin"></u-icon>
</view>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
import base64 from '@/common/base64.js';
export default {
data() {
return {
username: 'admin',
password: '123456',
showPassword: false,
remember: true,
isValidCodeLogin: false,
validCode: '',
imgValidCodeSrc: null,
baseUrl: ''
};
},
onLoad() {
this.$u.api.loginCheck().then(res => {
if (typeof res === 'object' && res.data.result !== 'login') {
uni.reLaunch({
url: '/pages/sys/home/index'
});
}
});
},
methods: {
showPass() {
this.showPassword = !this.showPassword;
},
refreshImgValidCode(e) {
if (this.vuex_token == '') {
this.$u.api.index().then(res => {
this.imgValidCodeSrc = this.vuex_config.baseUrl + '/validCode?__sid='
+ res.sessionid + '&t=' + new Date().getTime();
});
} else {
this.imgValidCodeSrc = this.vuex_config.baseUrl + '/validCode?__sid='
+ this.vuex_token + '&t=' + new Date().getTime();
}
this.validCode = '';
},
submit() {
if (this.username.length == 0) {
this.$u.toast('请输入账号');
return;
}
if (this.password.length == 0) {
this.$u.toast('请输入密码');
return;
}
this.$u.api.login({
username: this.username,
password: this.password,
cid: 111,
code: this.validCode === '' ? '1234' : this.validCode,
device: 'api',
param_remember: this.remember
})
.then(res => {
this.$u.toast(res.message || '未连接服务器');
if (res.code === 0) {
setTimeout(() => {
uni.reLaunch({
url: '/pages/sys/home/index'
});
}, 500);
}
if (res.isValidCodeLogin) {
this.isValidCodeLogin = true;
this.refreshImgValidCode();
}
});
},
wxLogin(res) {
this.$u.toast('微信登录');
},
qqLogin() {
this.$u.toast('QQ 登录');
},
updateBaseUrl() {
this.vuex_config.baseUrl = this.baseUrl;
this.$u.vuex('vuex_config', this.vuex_config);
this.$u.http.setConfig({
baseUrl: this.baseUrl
});
this.$u.toast('切换成功!');
}
}
};
</script>
<style lang="scss">
@import 'index.scss';
.logo {
width: 260 rpx;
height: 260 rpx;
background: rgba(59, 121, 235, 1);
box-shadow: 0 rpx 5 rpx 20 rpx 5 rpx rgba(45, 127, 235, 0.5);
border-radius: 50%;
margin: 70 rpx auto 10 rpx auto;
}
.logo image {
width: 260 rpx;
height: 260 rpx;
border-radius: 50%;
}
.base-url js-select {
width: 100%;
}
.button {
margin: 30 rpx auto 0;
}
.footer {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
text-align: center;
color: #46afff;
height: 40 rpx;
line-height: 40 rpx;
font-size: 35 rpx;
margin-top: 60 rpx;
}
.footer text {
font-size: 30 rpx;
margin-left: 25 rpx;
margin-right: 25 rpx;
}
.oauth2 {
display: flex;
flex-direction: row;
justify-content: space-around;
margin: 55 rpx 100 rpx;
image {
height: 100 rpx;
width: 100 rpx;
}
}
</style>

View File

@@ -0,0 +1,187 @@
<template>
<view class="wrap">
<view class="list">
<view class="list-call">
<u-icon class="u-icon" size="40" name="account"></u-icon>
<input class="u-input" type="text" v-model="loginCode" maxlength="32" placeholder="请输入登录账号" />
</view>
<view class="list-call">
<u-icon class="u-icon" size="40" name="chat"></u-icon>
<input class="u-input" type="text" v-model="userName" maxlength="20" placeholder="请输入用户昵称" />
</view>
<!-- <view class="list-call">
<u-icon class="u-icon" size="40" name="email"></u-icon>
<input class="u-input" type="text" v-model="email" placeholder="请输入电子邮箱" />
</view> -->
<view class="list-call">
<u-icon class="u-icon" size="40" name="phone"></u-icon>
<input class="u-input" type="text" v-model="mobile" maxlength="11" placeholder="请输入手机号码" />
</view>
<view class="list-call">
<u-icon class="u-icon" size="40" name="lock"></u-icon>
<input class="u-input" type="text" v-model="password" maxlength="32" placeholder="请输入登录密码" :password="!showPassword" />
<image class="u-icon-right" :src="'/static/jeesite/login/eye_' + (showPassword ? 'open' : 'close') + '.png'" @click="showPass()"></image>
</view>
<view class="list-call">
<u-icon class="u-icon" size="40" name="bookmark"></u-icon>
<input class="u-input" type="text" v-model="validCode" maxlength="4" placeholder="图片验证码" />
<u-image class="img-valid-code" width="300rpx" height="90rpx" :src="imgValidCodeSrc" @click="refreshImgValidCode()"></u-image>
</view>
<view class="list-call">
<u-icon class="u-icon" size="40" name="coupon"></u-icon>
<input class="u-input" type="text" v-model="fpValidCode" maxlength="6" placeholder="手机验证码" />
<u-verification-code ref="uCode" :seconds="seconds" @change="codeChange"></u-verification-code>
<view class="btn-valid-code" :class="{ 'btn-valid-codes': tips != '获取验证码' && tips != '重新获取' }"
hover-class="btn-valid-code-hover" @click="getValidCode()">{{tips}}</view>
</view>
</view>
<view class="agreement">
<u-checkbox v-model="terms">我已阅读并同意</u-checkbox>
<navigator url="/pages/common/webview?title=软件用户协议&url=https://jeesite.com/docs/support/"
open-type="navigate">软件用户协议</navigator>
</view>
<view class="button" hover-class="button-hover" @click="submit()"><text>注册账号</text></view>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
data() {
return {
loginCode: '',
userName: '',
email: '',
mobile: '',
userType: 'member',
terms: false,
password: '',
validCode: '',
fpValidCode: '',
showPassword: false,
imgValidCodeSrc: null,
tips: '获取验证码',
seconds: 60
};
},
onLoad() {
this.refreshImgValidCode();
},
methods: {
showPass() {
this.showPassword = !this.showPassword;
},
refreshImgValidCode(e) {
if (this.vuex_token == '') {
this.$u.api.index().then(res => {
this.imgValidCodeSrc = this.vuex_config.baseUrl + '/validCode?__sid='
+ res.sessionid + '&t=' + new Date().getTime();
});
} else {
this.imgValidCodeSrc = this.vuex_config.baseUrl + '/validCode?__sid='
+ this.vuex_token + '&t=' + new Date().getTime();
}
this.validCode = '';
},
codeChange(text) {
this.tips = text;
},
formValid() {
if (this.loginCode.length == 0) {
this.$u.toast('请输入账号');
return false;
}
if (this.userName.length == 0) {
this.$u.toast('请输入昵称');
return false;
}
if (this.password.length == 0) {
this.$u.toast('请输入密码');
return false;
}
if (this.validCode.length == 0) {
this.$u.toast('请输入图片验证码');
return false;
}
return true;
},
getValidCode() {
if (!this.formValid()) {
return;
}
if (this.$refs.uCode.canGetCode) {
this.$u.api.validCode({
validCode: this.validCode
})
.then(res => {
if (res !== 'true') {
this.$u.toast('图片验证码错误');
return;
}
this.$u.api.getRegValidCode({
loginCode: this.loginCode,
userName: this.userName,
email: this.email,
mobile: this.mobile,
userType: this.userType,
validCode: this.validCode,
validType: 'mobile'
})
.then(res => {
this.$u.toast(res.message, 3000);
if (res.result == 'false') {
this.refreshImgValidCode();
}
});
this.$refs.uCode.start();
});
}
},
submit() {
if (!this.formValid()) {
return;
}
if (this.terms != true){
this.$u.toast('请阅读《用户使用协议》');
return false;
}
if (this.fpValidCode.length == 0) {
this.$u.toast('请输入手机验证码');
return false;
}
this.$u.api.saveRegByValidCode({
loginCode: this.loginCode,
userName: this.userName,
regValidCode: this.fpValidCode,
password: this.password
})
.then(res => {
uni.showModal({
title: '提示',
content: res.message,
showCancel: false,
success: function () {
if (res.result == 'true') {
uni.reLaunch({
url: '/pages/sys/login/index'
});
}
}
});
});
}
}
};
</script>
<style lang="scss">
@import 'index.scss';
.agreement {
display:flex;
flex-direction:row;
align-items:center;
margin-left:90rpx;
color:#666;
}
</style>

View File

@@ -0,0 +1,77 @@
<template>
<view class="wrap">
<view class="article-title">{{banner.title}}</view>
<view class="article-meta">
{{banner.author_name}} 发起于 {{banner.published_at}}</text>
</view>
<view class="article-content">
<rich-text :nodes="content"></rich-text>
</view>
<view class="u-p-t-5"></view>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
data() {
return {
banner: {
cover: '/static/jeesite/banner/2.svg',
title: '最好用的快速开发平台',
author_name: '系统管理员',
published_at: '2021-4-20 12:30'
},
content: `<p>
JeeSite 快速开发平台,不仅仅是一个后台开发框架,它是一个企业级快速开发解决方案,基于经典技术组合 Spring Boot、Spring MVC、Apache Shiro、MyBatis、Beetl、Bootstrap、AdminLTE 采用经典开发模式让初学者能够更快的入门并投入到团队开发中去。在线代码生成功能包括模块如组织机构、角色用户、菜单及按钮授权、数据权限、系统参数、内容管理、工作流等。采用松耦合设计模块增减便捷界面无刷新一键换肤众多账号安全设置密码策略文件在线预览消息推送多元化第三方登录在线定时任务配置支持集群支持SAAS支持多数据源支持读写分离、分库分表支持微服务应用。
</p><p>
JeeSite 快速开发平台的主要目的是能够让初级的研发人员快速的开发出复杂的业务功能(经典架构会的人多),让开发者注重专注业务,其余有平台来封装技术细节,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。
</p><p>
JeeSite 自 2013 年发布以来已被广大爱好者用到了企业、政府、医疗、金融、互联网等各个领域中JeeSite 架构精良、易于扩展、大众思维的设计模式、工匠精神打磨每一个细节,深入开发者的内心,并荣获开源中国《最受欢迎中国开源软件》奖杯,期间也帮助了不少刚毕业的大学生,教师作为入门教材,快速的去实践。
</p><p>
JeeSite4 的升级,作者结合了多年总结和经验,以及各方面的应用案例,对架构完成了一次全部重构,也纳入很多新的思想。不管是从开发者模式、底层架构、逻辑处理还是到用户界面,用户交互体验上都有很大的进步,在不忘学习成本、提高开发效率的情况下,安全方面也做和很多工作,包括:身份认证、密码策略、安全审计、日志收集等众多安全选项供你选择。努力为大中小微企业打造全方位企业级快速开发解决方案。
</p>`
};
},
onLoad() {
},
methods: {
navTo(url) {
uni.navigateTo({
url: url
});
}
}
};
</script>
<style lang="scss">
page {
background-color: #f8f8f8;
}
.article-title {
font-size: 38rpx;
font-weight: 400;
text-align: center;
padding-bottom: 30rpx;
margin: 30rpx;
border-bottom: 1px solid #c0c4cb;
color: #51a0d5;
}
.article-meta {
padding: 10rpx 50upx 30rpx;
color: gray;
}
.article-content {
padding: 0 30upx;
overflow: hidden;
font-size: 30rpx;
line-height: 50rpx;
margin-bottom: 30rpx;
text-indent: 60rpx;
/deep/ p {
margin-bottom: 20rpx;
}
}
</style>

View File

@@ -0,0 +1,163 @@
<template>
<view class="wrap">
<js-lang title="msg.title"></js-lang>
<view class="search">
<u-search v-model="keywords" @custom="search" @search="search"></u-search>
</view>
<scroll-view class="scroll-list" scroll-y="true">
<u-collapse class="box" :accordion="false" :arrow="false">
<view class="item" v-for="(item, index) in list" :key="item.code">
<u-collapse-item :open="true">
<view class="title" slot="title">
<u-icon :name="item.icon != '' ? item.icon : 'home'" :size="35"></u-icon>
<view class="text">{{item.name}}</view>
<u-badge v-if="item.count && item.count > 0" :count="item.count"></u-badge>
</view>
<u-cell-group class="list" :border="false">
<u-cell-item :arrow="true" v-for="(child, index2) in item.childList" :key="child.code" @click="navTo('/pages/sys/msg/form')">
<text slot="title">{{child.name}}</text>
<text slot="label">发送者{{child.createByName}} | 时间{{child.createDate}}</text>
</u-cell-item>
</u-cell-group>
</u-collapse-item>
</view>
</u-collapse>
</scroll-view>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
data() {
return {
keywords: '',
list: [
{
code: 'a',
name: '重要消息',
icon: 'error-circle',
count: 3,
childList: [
{
code: 'a1',
name: '铁马冰河入梦来铁马冰河入梦来铁马冰河入梦来河入梦来铁马冰河入梦来河入梦来铁马冰河入梦来河入梦来',
createByName: '管理员',
createDate: '2021-4-6 12:10'
},
{
code: 'a2',
name: '发文',
createByName: '管理员',
createDate: '2021-4-6 12:10'
},
{
code: 'a3',
name: '查询',
createByName: '管理员',
createDate: '2021-4-6 12:10'
}
]
},
{
code: 'a-1',
name: '一般消息',
icon: 'chat',
childList: [
{
code: 'a1',
name: '铁马冰河入梦来铁马冰河入梦来铁马冰河入梦来河入梦来',
createByName: '管理员',
createDate: '2021-4-6 12:10'
},
{
code: 'a2',
name: '发文',
createByName: '管理员',
createDate: '2021-4-6 12:10'
},
{
code: 'a3',
name: '查询',
createByName: '管理员',
createDate: '2021-4-6 12:10'
}
]
},
{
code: 'a-2',
name: '系统通知',
icon: 'bell',
childList: [
{
code: 'a1',
name: '铁马冰河入梦来铁马冰河入梦来铁马冰河入梦来河入梦来',
createByName: '管理员',
createDate: '2021-4-6 12:10'
},
{
code: 'a2',
name: '发文',
createByName: '管理员',
createDate: '2021-4-6 12:10'
},
{
code: 'a3',
name: '查询',
createByName: '管理员',
createDate: '2021-4-6 12:10'
}
]
},
{
code: 'a-3',
name: '已读消息',
icon: 'volume',
childList: [
{
code: 'a1',
name: '铁马冰河入梦来铁马冰河入梦来铁马冰河入梦来河入梦来',
createByName: '管理员',
createDate: '2021-4-6 12:10'
},
{
code: 'a2',
name: '发文',
createByName: '管理员',
createDate: '2021-4-6 12:10'
},
{
code: 'a3',
name: '查询',
createByName: '管理员',
createDate: '2021-4-6 12:10'
}
]
},
],
};
},
onLoad() {
},
methods: {
navTo(url) {
uni.navigateTo({
url: url
});
},
search(value) {
this.$u.toast('搜索内容为:' + value)
}
}
};
</script>
<style lang="scss">
page {
background-color: #f8f8f8;
}
</style>

View File

@@ -0,0 +1,78 @@
<template>
<view class="wrap">
<view class="u-p-t-30 u-p-b-30 u-flex u-flex-col u-text-center">
<u-avatar size="250" src="/static/jeesite/logo200.png"></u-avatar>
<view class="title">{{vuex_config.productName}}</view>
<view class="version">{{vuex_config.productVersion}}</view>
</view>
<u-cell-group class="form" :border="false">
<u-cell-item :arrow="true" title="检查更新" @click="upgrade()"></u-cell-item>
<navigator url="comment" open-type="navigate">
<u-cell-item :arrow="true" title="意见反馈"></u-cell-item>
</navigator>
<navigator url="/pages/common/webview?title=公司首页&url=https://jeesite.com" open-type="navigate">
<u-cell-item :arrow="true" title="公司首页">https://jeesite.com</u-cell-item>
</navigator>
<navigator url="/pages/common/webview?title=服务条款&url=http://s.jeesite.com/" open-type="navigate">
<u-cell-item :arrow="true" title="服务条款">http://s.jeesite.com/</u-cell-item>
</navigator>
</u-cell-group>
<view class="copyright">
<view>卓源软件 版权所有</view>
<view>Copyright &copy; 2021 jeesite.com</view>
<view>All Rights Reserved</view>
</view>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
methods: {
upgrade(){
// #ifdef APP-PLUS
this.$u.api.upgradeCheck().then(res => {
if (res.result == 'true'){
uni.showModal({
title: '提示',
content: res.message + '是否下载更新?',
showCancel: true,
success: function (res2) {
if (res2.confirm) {
plus.runtime.openURL(res.data.apkUrl);
}
}
});
}else{
this.$u.toast(res.message);
}
});
// #endif
// #ifndef APP-PLUS
this.$u.toast('小程序端或H5端已是最新版无需检查更新');
// #endif
}
}
};
</script>
<style lang="scss">
page {
background-color: #f8f8f8;
}
.title {
display: flex;
margin: 30rpx 0;
font-size: 50rpx;
}
.version {
margin-bottom: 10rpx;
font-size: 40rpx;
}
.copyright {
margin-top: 50rpx;
text-align: center;
line-height: 60rpx;
color: #999;
}
</style>

View File

@@ -0,0 +1,98 @@
<template>
<view class="wrap">
<u-form class="form" :model="model" :rules="rules" ref="uForm" label-position="top">
<u-form-item label="分类:" prop="category" label-position="left" label-width="100">
<js-select v-model="model.category" dict-type="app_comment_category"
placeholder="请选择分类"></js-select>
</u-form-item>
<u-form-item label="问题和意见" prop="content">
<u-input type="textarea" placeholder="请填写10个字以上的问题描述以便我们提供更好的帮助"
v-model="model.content" height="200" maxlength="500" />
</u-form-item>
<u-form-item label="上传图片(选填,提供问题截图)" prop="images">
<js-uploadfile v-model="model" biz-type="appComment_image"></js-uploadfile>
</u-form-item>
<u-form-item label="联系方式手机、邮箱、QQ号码" prop="contact">
<u-input placeholder="选填,便于我们与你联系,进一步沟通"
v-model="model.contact" type="text" maxlength="200"></u-input>
</u-form-item>
</u-form>
<view class="form-footer">
<u-button class="btn" type="primary" @click="submit">提交</u-button>
<!-- <u-button class="btn" type="default" @click="cancel">关闭</u-button> -->
</view>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
data() {
return {
model: {
id: '',
category: '',
content: '',
contact: '',
deviceInfo: ''
},
rules: {
category: [
{
required: true,
message: '请选择问题和意见的分类',
trigger: ['change','blur'],
}
],
content: [
{
required: true,
min: 10, max: 500,
message: '问题和意见在 10 到 500 个字符之间',
trigger: ['change','blur'],
}
],
}
};
},
onReady() {
this.$refs.uForm.setRules(this.rules);
// 获取设备信息
uni.getSystemInfo({
success: res => {
this.model.deviceInfo = JSON.stringify(res);
}
});
},
methods: {
submit() {
// console.log(this.model)
this.$refs.uForm.validate(valid => {
if (valid) {
this.$u.api.commentSave(this.model).then(res => {
uni.showModal({
title: '提示',
content: res.message,
showCancel: false,
success: function () {
if (res.result == 'true') {
uni.navigateBack();
}
}
});
});
} else {
this.$u.toast('您填写的信息有误,请根据提示修正。');
}
});
},
cancel() {
uni.navigateBack();
}
}
};
</script>
<style lang="scss">
</style>

View File

@@ -0,0 +1,106 @@
<template>
<view class="wrap">
<view class="search">
<u-search v-model="keywords" @custom="search" @search="search"></u-search>
</view>
<view class="u-p-t-5 u-p-b-5">
<u-collapse class="box" :accordion="false" :arrow="false">
<view class="item" v-for="(item, index) in list" :key="item.code">
<u-collapse-item :open="true">
<view class="title" slot="title">
<u-icon :name="item.icon != '' ? item.icon : 'home'" :size="35"></u-icon>
<view class="text">{{item.name}}</view>
</view>
<u-cell-group class="list" :border="false">
<u-cell-item :arrow="true" v-for="(child, index2) in item.childList" :key="child.code" @click="navTo('/pages/sys/msg/form')">
<text slot="title">{{child.name}}</text>
<text slot="label">发送者{{child.createByName}} &nbsp;|&nbsp; 时间{{child.createDate}}</text>
</u-cell-item>
</u-cell-group>
</u-collapse-item>
</view>
</u-collapse>
</view>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
data() {
return {
keywords: '',
list: [
{
code: 'a',
name: '常见问题',
icon: 'error-circle',
childList: [
{
code: 'a1',
name: '为什么没有消息提醒?',
createByName: '管理员',
createDate: '2021-4-6 12:10'
},
{
code: 'a2',
name: '怎么关闭消息提醒?',
createByName: '管理员',
createDate: '2021-4-6 12:10'
},
{
code: 'a3',
name: '怎么办理工单?',
createByName: '管理员',
createDate: '2021-4-6 12:10'
}
]
},
{
code: 'a-1',
name: '任务相关',
icon: 'clock',
childList: [
{
code: 'a1',
name: '怎么办理任务?',
createByName: '管理员',
createDate: '2021-4-6 12:10'
},
{
code: 'a2',
name: '怎么完成任务?',
createByName: '管理员',
createDate: '2021-4-6 12:10'
},
{
code: 'a3',
name: '怎么查询任务?',
createByName: '管理员',
createDate: '2021-4-6 12:10'
}
]
}
],
};
},
methods: {
navTo(url) {
uni.navigateTo({
url: url
});
},
search(value) {
this.$u.toast('搜索内容为:' + value)
}
}
};
</script>
<style lang="scss">
page {
background-color: #f8f8f8;
}
</style>

View File

@@ -0,0 +1,98 @@
/*!
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* @author ThinkGem
* @version 2020-9-1
*/
.header {
background-color: #4094ff;
.userinfo {
display: flex;
padding: 40rpx;
.image {
flex-shrink: 0;
width: 120rpx;
height: 120rpx;
image {
border-radius: 100%;
width: 100%;
height: 100%;
}
}
.info {
display: flex;
flex-flow: wrap;
padding-left: 30rpx;
color: #fff;
.username {
width: 100%;
font-size: 40rpx;
padding-top: 8rpx;
}
.usercode {
height: 48rpx;
padding: 0 20rpx;
margin-top: 10rpx;
background-color: rgba(0, 0, 0, 0.1);
border-radius: 20rpx;
font-size: 30rpx;
}
}
}
.logout {
flex-shrink: 0;
position: absolute;
right: 70rpx;
top: 65rpx;
.u-btn {
font-size: 30rpx;
}
}
}
.toolbar {
padding: 0 4%;
margin-bottom: 5rpx;
border-radius: 0 0 100% 100%;
background-color: #4094ff;
.box {
display: flex;
flex-direction: row;
justify-content: space-around;
padding: 10rpx;
border-radius: 15rpx;
box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.15);
background-color: #fefefe;
.item {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
// flex-flow: wrap;
height: 120rpx;
color: #666666;
font-size: 30rpx;
padding: 10rpx 10rpx;
.icon {
font-size: 50rpx;
}
.label {
padding: 10rpx;
}
}
.hover {
background-color: #f6f6f6;
border-radius: 15rpx;
}
}
}

View File

@@ -0,0 +1,128 @@
<template>
<view class="wrap">
<js-lang title="user.title"></js-lang>
<view class="header">
<view class="userinfo">
<view class="image" @click="navTo('info')"><image :src="avatarUrl"></image></view>
<view class="info">
<view class="username">{{ vuex_user.username || $t('login.noLogin') }}</view>
<view class="realname">{{ vuex_user.realname || $t('login.noLogin') }}</view>
</view>
</view>
<view class="logout"><u-button type="success" shape="circle" size="mini" @click="logout">{{$t('login.logoutButton')}}</u-button></view>
</view>
<!-- <view class="toolbar">
<view class="box">
<navigator class="item" hover-class="hover" url="info">
<view class="icon"><u-icon class="u-icon" :style="{ color: '#ea9a44' }" name="account"></u-icon></view>
<text class="label">个人信息</text>
</navigator>
<navigator class="item" hover-class="hover" url="help">
<view class="icon"><u-icon class="u-icon" :style="{ color: '#a571fd' }" name="question-circle"></u-icon></view>
<text class="label">帮助中心</text>
</navigator>
<navigator class="item" hover-class="hover" url="info">
<view class="icon"><u-icon class="u-icon" :style="{ color: '#ea9a44' }" name="account"></u-icon></view>
<text class="label">个人信息</text>
</navigator>
<navigator class="item" hover-class="hover" url="help">
<view class="icon"><u-icon class="u-icon" :style="{ color: '#a571fd' }" name="question-circle"></u-icon></view>
<text class="label">帮助中心</text>
</navigator>
</view>
</view> -->
<view class="u-p-t-10 u-p-b-20">
<view class="u-m-t-20">
<u-cell-group>
<u-cell-item icon="account" :iconSize="iconSize" :iconStyle="{color:'#266bff'}"
title="个人信息" @click="navTo('info')"></u-cell-item>
<u-cell-item icon="lock" :iconSize="iconSize" :iconStyle="{ color: '#1bca6a' }"
title="修改密码" @click="navTo('pwd')"></u-cell-item>
<u-cell-item icon="question-circle" :iconSize="iconSize" :iconStyle="{ color: '#d99e59' }"
title="帮助中心" @click="navTo('help')"></u-cell-item>
</u-cell-group>
</view>
<view class="u-m-t-20">
<u-cell-group>
<u-cell-item icon="heart" :iconSize="iconSize" :iconStyle="{ color: '#0a1aff' }"
title="关于我们" @click="navTo('about')"></u-cell-item>
<u-cell-item icon="kefu-ermai" :iconSize="iconSize" :iconStyle="{ color: '#a571fd' }"
title="意见反馈" @click="navTo('comment')"></u-cell-item>
<u-cell-item icon="clock" :iconSize="iconSize" :iconStyle="{ color: '#ff6f27' }"
title="检查更新" @click="upgrade()"></u-cell-item>
</u-cell-group>
</view>
<view class="u-m-t-20">
<u-cell-group>
<u-cell-item icon="setting" :iconSize="iconSize" :iconStyle="{ color: '#1a94ff' }"
title="系统设置" @click="navTo('setting')"></u-cell-item>
</u-cell-group>
</view>
</view>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
data() {
return {
iconSize: 38
};
},
computed: {
avatarUrl() {
let url = this.vuex_user.avatar || '/ctxPath/static/images/user1.jpg';
url = url.replace('/ctxPath/', this.vuex_config.baseUrl + '/');
return url + '?t=' + new Date().getTime();
}
},
methods: {
navTo(url) {
uni.navigateTo({
url: url
});
},
logout() {
this.$u.api.logout().then(res => {
this.$u.toast(res.message);
setTimeout(() => {
uni.reLaunch({
url: '/pages/sys/login/index'
});
}, 500);
});
},
upgrade(){
// #ifdef APP-PLUS
this.$u.api.upgradeCheck().then(res => {
if (res.result == 'true'){
uni.showModal({
title: '提示',
content: res.message + '是否下载更新?',
showCancel: true,
success: function (res2) {
if (res2.confirm) {
plus.runtime.openURL(res.data.apkUrl);
}
}
});
}else{
this.$u.toast(res.message);
}
});
// #endif
// #ifndef APP-PLUS
this.$u.toast('小程序端或H5端无需检查更新')
// #endif
}
}
};
</script>
<style lang="scss">
@import 'index.scss';
page {
background-color: #f8f8f8;
}
</style>

View File

@@ -0,0 +1,224 @@
<template>
<view class="wrap">
<view class="u-m-t-50 u-flex u-flex-col u-text-center">
<u-avatar size="150" :src="avatarUrl"></u-avatar>
<u-button size="medium" shape="circle" class="u-m-t-40"
style="font-size:34rpx" @click="chooseAvatar">选择头像</u-button>
</view>
<u-form class="form" :model="model" :rules="rules" ref="uForm">
<u-form-item label="昵称" prop="realname" label-width="120">
<u-input placeholder="请输入用户昵称" v-model="model.realname" type="text"></u-input>
</u-form-item>
<u-form-item label="性别" prop="sex" label-width="120">
<js-radio v-model="model.sex" dict-type="sys_user_sex"></js-radio>
</u-form-item>
<u-form-item label="邮箱" prop="email" label-width="120">
<u-input placeholder="请输入电子邮箱" v-model="model.email" type="text"></u-input>
</u-form-item>
<u-form-item label="手机" prop="mobile" label-width="120">
<u-input placeholder="请输入手机号码" v-model="model.mobile" type="number" maxlength="11"></u-input>
</u-form-item>
<u-form-item label="QQ" prop="qq" label-width="120">
<u-input placeholder="请输入QQ" v-model="model.qq" type="text"></u-input>
</u-form-item>
<u-form-item label="地址" prop="address" label-width="120">
<u-input type="textarea" placeholder="请输入你的地址" v-model="model.address" height="128" />
</u-form-item>
<u-form-item label="上次登录时间" label-width="250">
{{this.$u.date(model.last_time, 'yyyy-mm-dd hh:MM:ss')}}
</u-form-item>
<u-form-item label="上次登录地址" label-width="250">
{{model.last_ip}}
</u-form-item>
</u-form>
<view class="form-footer">
<u-button class="btn" type="primary" @click="submit">提交</u-button>
<!-- <u-button class="btn" type="default" @click="cancel">关闭</u-button> -->
</view>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
data() {
return {
model: {
sex: '1'
},
rules: {
realname: [
{
required: true,
message: '请输入姓名',
trigger: 'blur' ,
},
{
min: 2,
max: 32,
message: '姓名长度在 2 到 32 个字符',
trigger: ['change', 'blur'],
},
// {
// // 此为同步验证可以直接返回true或者false如果是异步验证稍微不同见下方说明
// validator: (rule, value, callback) => {
// // 调用uView自带的js验证规则详见https://www.uviewui.com/js/test.html
// return this.$u.test.chinese(value);
// },
// message: '姓名必须为中文',
// // 触发器可以同时用blur和change二者之间用英文逗号隔开
// trigger: ['change', 'blur'],
// },
// {
// // 异步验证,用途:比如用户注册时输入完账号,后端检查账号是否已存在
// // 异步验证需要通过调用 callback(),并且在里面抛出 new Error()
// // 抛出的内容为需要提示的信息,和其他方式的 message 属性的提示一样
// asyncValidator: (rule, value, callback) => {
// this.$u.post('/ebapi/public_api/index').then(res => {
// if(res.error) {
// // 如果验证出错需要在callback()抛出new Error('错误提示信息')
// callback(new Error('姓名重复'));
// } else {
// // 如果没有错误,也要执行 callback() 回调
// callback();
// }
// })
// },
// trigger: ['blur'],
// },
// {
// // 正则校验示例此处用正则校验是否中文此处仅为示例因为uView有this.$u.test.chinese可以判断是否中文
// pattern: /^[\u4e00-\u9fa5]+$/gi,
// message: '简介只能为中文',
// trigger: 'change',
// },
],
mobile: [
// {
// required: true,
// message: '请输入手机号',
// trigger: ['change','blur'],
// },
{
validator: (rule, value, callback) => {
return value === '' || this.$u.test.mobile(value);
},
message: '手机号码不正确',
trigger: ['change','blur'],
}
],
// password: [
// {
// required: true,
// message: '请输入密码',
// trigger: ['change','blur'],
// },
// {
// // 正则不能含有两边的引号
// pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]+\S{5,12}$/,
// message: '需同时含有字母和数字长度在6-12之间',
// trigger: ['change','blur'],
// }
// ],
// rePassword: [
// {
// required: true,
// message: '请重新输入密码',
// trigger: ['change','blur'],
// },
// {
// validator: (rule, value, callback) => {
// return value === this.model.password;
// },
// message: '两次输入的密码不相等',
// trigger: ['change','blur'],
// }
// ],
},
avatarBase64: ''
};
},
onLoad() {
this.$u.api.memberProfile().then(res => {
this.model = res.data.user;
});
uni.$on('uAvatarCropper', path => {
this.avatarBase64 = path;
if (this.avatarBase64 != '' && !this.avatarBase64.startsWith('data:')){
// #ifdef APP-PLUS
let self = this, fileUrl = this.avatarBase64;
plus.io.resolveLocalFileSystemURL(path, function(entry) {
entry.file(function(file) {
var fileReader = new plus.io.FileReader()
fileReader.onload = function(data) {
// console.log(data.target.result);
self.avatarBase64 = data.target.result;
}
fileReader.onerror = function(error) { }
fileReader.readAsDataURL(file)
}, function(error) { })
}, function(error) { });
// #endif
// #ifndef APP-PLUS
this.avatarBase64 = 'data:image/jpeg;base64,' + uni.getFileSystemManager()
.readFileSync(this.avatarBase64, "base64");
// #endif
}
})
},
computed: {
avatarUrl() {
if (this.avatarBase64 != ''){
return this.avatarBase64;
}
let url = this.vuex_user.avatarUrl || '/ctxPath/static/images/user1.jpg';
url = url.replace('/ctxPath/', this.vuex_config.baseUrl + '/');
return url;
}
},
onReady() {
this.$refs.uForm.setRules(this.rules);
},
methods: {
chooseAvatar() {
this.$u.route({
url: '/uview-ui/components/u-avatar-cropper/u-avatar-cropper',
params: {
destWidth: 800, // 输出图片宽高
rectWidth: 200, // 裁剪框的宽高
fileType: 'jpg', // 输出的图片类型,如果'png'类型发现裁剪的图片太大,改成"jpg"即可
}
})
},
submit() {
this.$refs.uForm.validate(valid => {
if (valid) {
this.model.avatarBase64 = this.avatarBase64;
this.$u.api.user.infoSaveBase(this.model).then(res => {
this.$u.api.index(); // 保存后更新用户信息
uni.showModal({
title: '提示',
content: res.message,
showCancel: false,
success: function () {
if (res.result == 'true') {
uni.navigateBack();
}
}
});
});
} else {
this.$u.toast('您填写的信息有误,请根据提示修正。');
}
});
},
cancel() {
uni.navigateBack();
}
}
};
</script>
<style lang="scss">
</style>

View File

@@ -0,0 +1,106 @@
<template>
<view class="wrap">
<u-form class="form" :model="model" :rules="rules" ref="uForm">
<u-form-item label="旧密码" prop="oldPassword" label-width="180">
<u-input type="password" v-model="model.oldPassword" placeholder="请输入旧密码"></u-input>
</u-form-item>
<u-form-item label="新密码" prop="newPassword" label-width="180">
<u-input type="password" v-model="model.newPassword" placeholder="请输入新密码"></u-input>
</u-form-item>
<u-form-item label="确认密码" prop="confirmNewPassword" label-width="180">
<u-input type="password" v-model="model.confirmNewPassword" placeholder="请确认新密码"></u-input>
</u-form-item>
</u-form>
<view class="form-footer">
<u-button class="btn" type="primary" @click="submit">提交</u-button>
<!-- <u-button class="btn" type="default" @click="cancel">关闭</u-button> -->
</view>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
import base64 from '@/common/base64.js';
export default {
data() {
return {
model: {
oldPassword: '',
newPassword: '',
confirmNewPassword: ''
},
rules: {
oldPassword: [
{
required: true,
message: '请输入旧密码',
trigger: ['change','blur'],
}
],
newPassword: [
{
required: true,
message: '请输入新密码',
trigger: ['change','blur'],
},
{
pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]+\S{5,12}$/,
message: '需同时含有字母和数字长度在6-12之间',
trigger: ['change','blur'],
}
],
confirmNewPassword: [
{
required: true,
message: '请重新输入密码',
trigger: ['change','blur'],
},
{
validator: (rule, value, callback) => {
return value === this.model.newPassword;
},
message: '两次输入的密码不相等',
trigger: ['change','blur'],
}
],
}
};
},
onReady() {
this.$refs.uForm.setRules(this.rules);
},
methods: {
submit() {
this.$refs.uForm.validate(valid => {
if (valid) {
this.$u.api.user.infoSavePwd({
oldPassword: base64.btoa(this.model.oldPassword),
newPassword: base64.btoa(this.model.newPassword),
confirmNewPassword: base64.btoa(this.model.confirmNewPassword)
}).then(res => {
uni.showModal({
title: '提示',
content: res.message,
showCancel: false,
success: function () {
if (res.result == 'true') {
uni.navigateBack();
}
}
});
});
} else {
this.$u.toast('您填写的信息有误,请根据提示修正。');
}
});
},
cancel() {
uni.navigateBack();
}
}
};
</script>
<style lang="scss">
</style>

View File

@@ -0,0 +1,87 @@
<template>
<view class="wrap">
<u-cell-group :border="false" title="消息提醒">
<u-cell-item title="接受消息提醒" :arrow="false">
<u-switch v-model="message" slot="right-icon" class="u-m-l-20"></u-switch>
</u-cell-item>
<u-cell-item title="通知栏显示消息详情" :arrow="false">
<u-switch v-model="messageBar" slot="right-icon" class="u-m-l-20"></u-switch>
<text slot="label">关闭后当收到消息的时候只显示有提示不显示消息内容</text>
</u-cell-item>
</u-cell-group>
<u-cell-group :border="false" title="声音与振动">
<u-cell-item title="收到消息后播放声音或振动" @click="openSettings">
<text slot="label">前往系统设置中修改声音与振动</text>
</u-cell-item>
</u-cell-group>
<u-cell-group :border="false" title="软件更新提醒">
<u-cell-item title="软件更新提醒" :arrow="false">
<u-switch v-model="upgrade" slot="right-icon" class="u-m-l-20"></u-switch>
<text slot="label">当本软件有新版本发布时给予提醒</text>
</u-cell-item>
</u-cell-group>
<view class="u-m-40">
<u-button type="primary" @click="logout" :hair-line="false">退出登录</u-button>
</view>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
data() {
return {
message: true,
messageBar: true,
upgrade: true
};
},
methods: {
openSettings() {
// #ifdef APP-PLUS
uni.getSystemInfo({
success(res) {
if(res.platform == 'ios'){
plus.runtime.openURL("app-settings://");
} else if (res.platform == 'android'){
var main = plus.android.runtimeMainActivity();
var Intent = plus.android.importClass("android.content.Intent");
var mIntent = new Intent('android.settings.SOUND_SETTINGS');
main.startActivity(mIntent);
}
}
});
// #endif
// #ifndef APP-PLUS
this.$u.toast('小程序端或H5端已是最新版无需检查更新');
// #endif
},
logout() {
this.$u.api.logout().then(res => {
this.$u.toast(res.message);
if (res.result == 'true') {
let self = this;
setTimeout(() => {
uni.reLaunch({
url: '/pages/sys/login/index'
});
}, 500);
}
});
}
}
};
</script>
<style lang="scss">
@import '../home/index.scss';
page {
background-color: #f8f8f8;
}
/deep/ .u-cell-title {
padding: 25rpx 30rpx;
font-size: 30rpx;
}
</style>

View File

@@ -0,0 +1,129 @@
<template>
<view class="wrap">
<u-form class="form" :model="model" :rules="rules" ref="uForm" label-position="left">
<u-form-item label="编号" prop="id" label-width="180" v-if="model.id">
<u-input placeholder="请输入编号" v-model="model.id" type="text" maxlength="64"></u-input>
</u-form-item>
<u-form-item label="单行文本" prop="testInput" label-width="180">
<u-input placeholder="请输入单行文本" v-model="model.testInput" type="text" maxlength="200"></u-input>
</u-form-item>
<u-form-item label="多行文本" prop="testTextarea" label-width="180" label-position="top">
<u-input type="textarea" placeholder="请输入多行文本" v-model="model.testTextarea" height="100" maxlength="500" />
</u-form-item>
<u-form-item label="下拉框" prop="testSelect" label-width="180">
<js-select v-model="model.testSelect" dict-type="sys_menu_type" placeholder="请选择选项"></js-select>
</u-form-item>
<!-- <u-form-item label="下拉框(树结构)" prop="testSelectMultiple" label-width="260">
<js-select v-model="model.testSelectMultiple" dict-type="app_tree_test" placeholder="请选择选项" :tree="true"
:label-value="model.testSelectMultipleLabel" @label-input="model.testSelectMultipleLabel = $event"></js-select>
</u-form-item> -->
<u-form-item label="单选框" prop="testRadio" label-width="180">
<js-radio v-model="model.testRadio" dict-type="sys_menu_type"></js-radio>
</u-form-item>
<u-form-item label="复选框" prop="testCheckbox" label-width="180">
<js-checkbox v-model="model.testCheckbox" dict-type="sys_menu_type"></js-checkbox>
</u-form-item>
<u-form-item label="机构选择" prop="testOffice" label-width="180">
<js-select v-model="model.testOffice.officeCode" :items="officeSelectList" placeholder="请选择机构" :tree="true"
:label-value="model.testOffice.officeName" @label-input="model.testOffice.officeName = $event"></js-select>
</u-form-item>
<u-form-item label="人员选择" prop="testUser" label-width="180">
<js-select v-model="model.testUser.userCode" :items="userSelectList" placeholder="请选择人员" :tree="true"
:label-value="model.testUser.userName" @label-input="model.testUser.userName = $event"></js-select>
</u-form-item>
<u-form-item label="上传图片(选填)" prop="images" label-position="top">
<js-uploadfile v-model="model.dataMap" :biz-key="model.id" biz-type="testData_image"></js-uploadfile>
</u-form-item>
</u-form>
<view class="form-footer">
<u-button class="btn" type="primary" @click="submit">提交</u-button>
<!-- <u-button class="btn" type="default" @click="cancel">关闭</u-button> -->
</view>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
data() {
return {
model: {
id: '',
testInput: '',
testTextarea: '',
testSelect: '',
testSelectMultiple: '',
testSelectMultipleLabel: '',
testRadio: '',
testCheckbox: '',
testUser: {
userCode: '',
userName: ''
},
testOffice: {
officeCode: '',
officeName: ''
}
},
rules: {
testInput: [
{
required: true,
message: '请输入单行文本',
trigger: ['change','blur'],
}
]
},
officeSelectList: [],
userSelectList: [],
};
},
onLoad(params){
this.$u.api.testData.form(params).then(res => {
Object.assign(this.model, res.testData);
});
},
onReady() {
this.$refs.uForm.setRules(this.rules);
// 机构数据
this.$u.api.office.treeData().then(res => {
this.officeSelectList = res;
});
// 人员和机构数据
this.$u.api.office.treeData({isLoadUser: true}).then(res => {
this.userSelectList = res;
});
},
methods: {
submit() {
//console.log(this.model)
this.$refs.uForm.validate(valid => {
if (valid) {
this.$u.api.testData.save(this.model).then(res => {
uni.showModal({
title: '提示',
content: res.message,
showCancel: false,
success: function () {
if (res.result == 'true') {
uni.setStorageSync('refreshList', true);
uni.navigateBack();
}
}
});
});
} else {
this.$u.toast('您填写的信息有误,请根据提示修正。');
}
});
},
cancel() {
uni.navigateBack();
}
}
};
</script>
<style lang="scss">
</style>

View File

@@ -0,0 +1,123 @@
<template>
<view class="wrap">
<view class="search">
<u-search v-model="keywords" @custom="search" @search="search"></u-search>
</view>
<scroll-view class="scroll-list" scroll-y="true" @scrolltolower="loadMore">
<u-cell-group class="list" :border="false">
<u-swipe-action :options="options" v-for="(item, index) in list" :key="item.id" :index="index" @click="optionsClick">
<u-cell-item :arrow="true" @click="navTo('form?id='+item.id)">
<text slot="title">ID: {{item.testInput || item.id}}</text>
<text slot="label">访问路径{{item.url}} &nbsp;|&nbsp; 时间{{item.created_at}}</text>
</u-cell-item>
</u-swipe-action>
</u-cell-group>
<view class="loadmore" @click="loadMore">
<u-loadmore :status="loadStatus"></u-loadmore>
</view>
</scroll-view>
<view class="btn-plus" @click="navTo('form')">
<u-icon name="plus-circle-fill" size="90" color="#3d87ff"></u-icon>
</view>
</view>
</template>
<script>
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
export default {
data() {
return {
keywords: '',
query: {
pageNo: 1,
pageSize: 20
},
list: [],
count: 0,
loadStatus: 'loadmore',
options: [
{text: '删除', style: { background: '#dd524d'}}
]
};
},
onLoad() {
this.loadList();
},
onShow() {
if (uni.getStorageSync('refreshList') === true){
uni.removeStorageSync('refreshList');
this.search('');
}
},
methods: {
loadMore() {
this.loadStatus = "loading";
setTimeout(() => {
this.query.pageNo += 1;
this.loadList();
}, 100);
},
loadList() {
this.$u.api.testData.list(this.query).then(res => {
if (!res.data.list || res.data.list.length === 0){
this.loadStatus = "nomore";
return;
}
this.list = this.list.concat(res.data.list);
this.count = res.data.total_count;
this.query.pageNo = res.data.page;
this.query.pageSize = res.data.limit;
this.loadStatus = "loadmore";
});
},
optionsClick(rowIndex, btnIndex) {
if(btnIndex == 0) {
let self = this;
uni.showModal({
title: '提示',
content: '确认要删除该数据吗?',
showCancel: true,
success: function (res2) {
if (res2.confirm) {
let row = self.list[rowIndex];
self.$u.api.testData.delete({id: row.id}).then(res => {
self.$u.toast(res.message);
if (res.result == 'true'){
self.list.splice(rowIndex, 1);
}
});
}
}
});
}
},
search(value) {
this.list = [];
this.query.pageNo = 0;
this.query.testInput = value;
this.loadList();
},
navTo(url) {
uni.navigateTo({
url: url
});
}
}
};
</script>
<style lang="scss">
page {
background-color: #f8f8f8;
}
.btn-plus {
position: absolute;
bottom: 50rpx;
right: 50rpx;
z-index: 1;
opacity: 0.6;
}
.btn-plus:hover {
opacity: 1;
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -0,0 +1,363 @@
(function(window, document, exportName, undefined) {
"use strict";
var isMultiTouch = false;
var multiTouchStartPos;
var eventTarget;
var touchElements = {};
// polyfills
if(!document.createTouch) {
document.createTouch = function(view, target, identifier, pageX, pageY, screenX, screenY, clientX, clientY) {
// auto set
if(clientX == undefined || clientY == undefined) {
clientX = pageX - window.pageXOffset;
clientY = pageY - window.pageYOffset;
}
return new Touch(target, identifier, {
pageX: pageX,
pageY: pageY,
screenX: screenX,
screenY: screenY,
clientX: clientX,
clientY: clientY
});
};
}
if(!document.createTouchList) {
document.createTouchList = function() {
var touchList = new TouchList();
for (var i = 0; i < arguments.length; i++) {
touchList[i] = arguments[i];
}
touchList.length = arguments.length;
return touchList;
};
}
/**
* create an touch point
* @constructor
* @param target
* @param identifier
* @param pos
* @param deltaX
* @param deltaY
* @returns {Object} touchPoint
*/
function Touch(target, identifier, pos, deltaX, deltaY) {
deltaX = deltaX || 0;
deltaY = deltaY || 0;
this.identifier = identifier;
this.target = target;
this.clientX = pos.clientX + deltaX;
this.clientY = pos.clientY + deltaY;
this.screenX = pos.screenX + deltaX;
this.screenY = pos.screenY + deltaY;
this.pageX = pos.pageX + deltaX;
this.pageY = pos.pageY + deltaY;
}
/**
* create empty touchlist with the methods
* @constructor
* @returns touchList
*/
function TouchList() {
var touchList = [];
touchList.item = function(index) {
return this[index] || null;
};
// specified by Mozilla
touchList.identifiedTouch = function(id) {
return this[id + 1] || null;
};
return touchList;
}
/**
* Simple trick to fake touch event support
* this is enough for most libraries like Modernizr and Hammer
*/
function fakeTouchSupport() {
var objs = [window, document.documentElement];
var props = ['ontouchstart', 'ontouchmove', 'ontouchcancel', 'ontouchend'];
for(var o=0; o<objs.length; o++) {
for(var p=0; p<props.length; p++) {
if(objs[o] && objs[o][props[p]] == undefined) {
objs[o][props[p]] = null;
}
}
}
}
/**
* we don't have to emulate on a touch device
* @returns {boolean}
*/
function hasTouchSupport() {
return ("ontouchstart" in window) || // touch events
(window.Modernizr && window.Modernizr.touch) || // modernizr
(navigator.msMaxTouchPoints || navigator.maxTouchPoints) > 2; // pointer events
}
/**
* disable mouseevents on the page
* @param ev
*/
function preventMouseEvents(ev) {
// 注释启用默认事件
// ev.preventDefault();
// ev.stopPropagation();
}
/**
* only trigger touches when the left mousebutton has been pressed
* @param touchType
* @returns {Function}
*/
function onMouse(touchType) {
return function(ev) {
// prevent mouse events
preventMouseEvents(ev);
if (ev.which !== 1) {
return;
}
// The EventTarget on which the touch point started when it was first placed on the surface,
// even if the touch point has since moved outside the interactive area of that element.
// also, when the target doesnt exist anymore, we update it
if (ev.type == 'mousedown' || !eventTarget || (eventTarget && !eventTarget.dispatchEvent)) {
eventTarget = ev.target;
}
// shiftKey has been lost, so trigger a touchend
if (isMultiTouch && !ev.shiftKey) {
triggerTouch('touchend', ev);
isMultiTouch = false;
}
triggerTouch(touchType, ev);
// we're entering the multi-touch mode!
if (!isMultiTouch && ev.shiftKey) {
isMultiTouch = true;
multiTouchStartPos = {
pageX: ev.pageX,
pageY: ev.pageY,
clientX: ev.clientX,
clientY: ev.clientY,
screenX: ev.screenX,
screenY: ev.screenY
};
triggerTouch('touchstart', ev);
}
// reset
if (ev.type == 'mouseup') {
multiTouchStartPos = null;
isMultiTouch = false;
eventTarget = null;
}
}
}
/**
* trigger a touch event
* @param eventName
* @param mouseEv
*/
function triggerTouch(eventName, mouseEv) {
var touchEvent = document.createEvent('Event');
touchEvent.initEvent(eventName, true, true);
touchEvent.altKey = mouseEv.altKey;
touchEvent.ctrlKey = mouseEv.ctrlKey;
touchEvent.metaKey = mouseEv.metaKey;
touchEvent.shiftKey = mouseEv.shiftKey;
touchEvent.touches = getActiveTouches(mouseEv, eventName);
touchEvent.targetTouches = getActiveTouches(mouseEv, eventName);
touchEvent.changedTouches = getChangedTouches(mouseEv, eventName);
eventTarget.dispatchEvent(touchEvent);
}
/**
* create a touchList based on the mouse event
* @param mouseEv
* @returns {TouchList}
*/
function createTouchList(mouseEv) {
var touchList = new TouchList();
if (isMultiTouch) {
var f = TouchEmulator.multiTouchOffset;
var deltaX = multiTouchStartPos.pageX - mouseEv.pageX;
var deltaY = multiTouchStartPos.pageY - mouseEv.pageY;
touchList.push(new Touch(eventTarget, 1, multiTouchStartPos, (deltaX*-1) - f, (deltaY*-1) + f));
touchList.push(new Touch(eventTarget, 2, multiTouchStartPos, deltaX+f, deltaY-f));
} else {
touchList.push(new Touch(eventTarget, 1, mouseEv, 0, 0));
}
return touchList;
}
/**
* receive all active touches
* @param mouseEv
* @returns {TouchList}
*/
function getActiveTouches(mouseEv, eventName) {
// empty list
if (mouseEv.type == 'mouseup') {
return new TouchList();
}
var touchList = createTouchList(mouseEv);
if(isMultiTouch && mouseEv.type != 'mouseup' && eventName == 'touchend') {
touchList.splice(1, 1);
}
return touchList;
}
/**
* receive a filtered set of touches with only the changed pointers
* @param mouseEv
* @param eventName
* @returns {TouchList}
*/
function getChangedTouches(mouseEv, eventName) {
var touchList = createTouchList(mouseEv);
// we only want to return the added/removed item on multitouch
// which is the second pointer, so remove the first pointer from the touchList
//
// but when the mouseEv.type is mouseup, we want to send all touches because then
// no new input will be possible
if(isMultiTouch && mouseEv.type != 'mouseup' &&
(eventName == 'touchstart' || eventName == 'touchend')) {
touchList.splice(0, 1);
}
return touchList;
}
/**
* show the touchpoints on the screen
*/
function showTouches(ev) {
var touch, i, el, styles;
// first all visible touches
for(i = 0; i < ev.touches.length; i++) {
touch = ev.touches[i];
el = touchElements[touch.identifier];
if(!el) {
el = touchElements[touch.identifier] = document.createElement("div");
document.body.appendChild(el);
}
styles = TouchEmulator.template(touch);
for(var prop in styles) {
el.style[prop] = styles[prop];
}
}
// remove all ended touches
if(ev.type == 'touchend' || ev.type == 'touchcancel') {
for(i = 0; i < ev.changedTouches.length; i++) {
touch = ev.changedTouches[i];
el = touchElements[touch.identifier];
if(el) {
el.parentNode.removeChild(el);
delete touchElements[touch.identifier];
}
}
}
}
/**
* TouchEmulator initializer
*/
function TouchEmulator() {
if (hasTouchSupport()) {
return;
}
fakeTouchSupport();
window.addEventListener("mousedown", onMouse('touchstart'), true);
window.addEventListener("mousemove", onMouse('touchmove'), true);
window.addEventListener("mouseup", onMouse('touchend'), true);
window.addEventListener("mouseenter", preventMouseEvents, true);
window.addEventListener("mouseleave", preventMouseEvents, true);
window.addEventListener("mouseout", preventMouseEvents, true);
window.addEventListener("mouseover", preventMouseEvents, true);
// it uses itself!
window.addEventListener("touchstart", showTouches, true);
window.addEventListener("touchmove", showTouches, true);
window.addEventListener("touchend", showTouches, true);
window.addEventListener("touchcancel", showTouches, true);
}
// start distance when entering the multitouch mode
TouchEmulator.multiTouchOffset = 75;
/**
* css template for the touch rendering
* @param touch
* @returns object
*/
TouchEmulator.template = function(touch) {
var size = 0;
var transform = 'translate('+ (touch.clientX-(size/2)) +'px, '+ (touch.clientY-(size/2)) +'px)';
return {
position: 'fixed',
left: 0,
top: 0,
background: '#fff',
border: 'solid 1px #999',
opacity: .6,
borderRadius: '100%',
height: size + 'px',
width: size + 'px',
padding: 0,
margin: 0,
display: 'block',
overflow: 'hidden',
pointerEvents: 'none',
webkitUserSelect: 'none',
mozUserSelect: 'none',
userSelect: 'none',
webkitTransform: transform,
mozTransform: transform,
transform: transform,
zIndex: 100
}
};
// export
if (typeof define == "function" && define.amd) {
define(function() {
return TouchEmulator;
});
} else if (typeof module != "undefined" && module.exports) {
module.exports = TouchEmulator;
} else {
window[exportName] = TouchEmulator;
}
})(window, document, "TouchEmulator");

View File

@@ -0,0 +1,52 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="keywords" content="PoweredByJeeSiteV4.0"/>
<meta name="description" content="PoweredByJeeSiteV4.0"/>
<link rel="shortcut icon" type="image/x-icon" href="static/jeesite/favicon.png">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>JeeSite Mobile APP</title>
<script>
window.onresize = function () {
if (document.documentElement.clientWidth < 768) {
window.location.href = '../#/';
}
};
window.onresize();
</script>
<style>
.mobile-model {
margin: 10px auto;
background-color: #fff;
width: 330px;
margin-top: calc(50vh - 350px);
box-sizing: border-box;
background-image: url(common/img/iPhoneX.png);
background-repeat: no-repeat;
background-size: 100%;
border-radius: 30px;
padding: 48px 23px 38px 16px;
}
.mobile-content {
box-sizing: border-box;
width: 298px;
height: 582px;
border-bottom-left-radius: 20px;
}
.mobile-iframe {
height: 100%;
width: 100%;
border-radius: 20px;
}
</style>
</head>
<body>
<div class="mobile-model">
<div class="mobile-content">
<iframe src="../#/" class="mobile-iframe" scrolling="auto" frameborder="0"></iframe>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,843 @@
<svg version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="743px"
height="560px" viewBox="0 0 743 560" enable-background="new 0 0 743 560" xml:space="preserve">
<g>
<g display="inline">
<g>
<g>
<g>
<g>
<rect y="490.125" fill="#D1E3FF" width="742.052" height="0.37"/>
<rect x="613.676" y="510.947" fill="#D1E3FF" width="15.749" height="0.371"/>
<rect x="538.751" y="511.133" fill="#D1E3FF" width="64.041" height="0.371"/>
<rect x="351.509" y="507.59" fill="#D1E3FF" width="108.068" height="0.371"/>
<rect x="255.051" y="514.041" fill="#D1E3FF" width="34.294" height="0.371"/>
<rect x="127.821" y="507.775" fill="#D1E3FF" width="47.225" height="0.371"/>
<rect x="183.287" y="507.775" fill="#D1E3FF" width="44.139" height="0.371"/>
<rect x="96.903" y="501.283" fill="#D1E3FF" width="45.075" height="0.37"/>
<path fill="#D1E3FF" d="M351.752,423.936H65.174c-4.671,0-8.471-3.8-8.471-8.471V12.632c0-4.67,3.8-8.47,8.471-8.47h286.578
c4.67,0,8.47,3.8,8.47,8.47v402.833C360.223,420.136,356.422,423.936,351.752,423.936z M65.174,4.533
c-4.467,0-8.1,3.633-8.1,8.099v402.833c0,4.466,3.633,8.101,8.1,8.101h286.578c4.466,0,8.099-3.635,8.099-8.101V12.632
c0-4.466-3.633-8.099-8.099-8.099H65.174z"/>
<path fill="#D1E3FF" d="M672.76,423.936H386.182c-4.67,0-8.47-3.8-8.47-8.471V12.632c0-4.67,3.8-8.47,8.47-8.47H672.76
c4.671,0,8.471,3.8,8.471,8.47v402.833C681.23,420.136,677.431,423.936,672.76,423.936z M386.182,4.533
c-4.466,0-8.099,3.633-8.099,8.099v402.833c0,4.466,3.633,8.101,8.099,8.101H672.76c4.466,0,8.101-3.635,8.101-8.101V12.632
c0-4.466-3.635-8.099-8.101-8.099H386.182z"/>
</g>
</g>
</g>
<g>
<g>
<rect x="80.28" y="36.089" fill="#D1E3FF" width="231.15" height="201.146"/>
<rect x="84.7" y="36.089" fill="#E3EEFF" width="236.188" height="201.146"/>
<rect x="80.28" y="237.236" fill="#D1E3FF" width="231.15" height="8.071"/>
<rect x="100.457" y="237.236" fill="#E3EEFF" width="236.188" height="8.071"/>
<rect x="97.94" y="49.331" fill="#F5FCFF" width="209.707" height="174.665"/>
<polygon fill="#FFFFFF" points="131.908,223.995 172.367,49.331 227.887,49.331 187.429,223.995 "/>
<path fill="#E2EEFF" d="M105.582,194.807c-0.523,0-0.947-0.423-0.947-0.946V57.946c0-0.522,0.424-0.946,0.947-0.946
c0.523,0,0.946,0.423,0.946,0.946v135.915C106.528,194.384,106.105,194.807,105.582,194.807z"/>
<polygon fill="#FFFFFF" points="198.806,223.995 239.262,49.331 258.472,49.331 218.014,223.995 "/>
<rect x="305.966" y="49.331" fill="#D1E3FF" width="1.681" height="174.665"/>
<polygon fill="#D1E3FF" points="324.02,50.772 92.87,50.772 91.651,46.752 322.801,46.752 "/>
<polygon fill="#D1E3FF" points="324.02,57.406 92.87,57.406 91.651,53.388 322.801,53.388 "/>
<polygon fill="#D1E3FF" points="324.02,64.041 92.87,64.041 91.651,60.022 322.801,60.022 "/>
<polygon fill="#D1E3FF" points="324.02,70.675 92.87,70.675 91.651,66.657 322.801,66.657 "/>
<polygon fill="#D1E3FF" points="324.02,77.31 92.87,77.31 91.651,73.292 322.801,73.292 "/>
<polygon fill="#D1E3FF" points="324.02,83.944 92.87,83.944 91.651,79.926 322.801,79.926 "/>
</g>
<g>
<g>
<g>
<rect x="501.176" y="49.182" fill="#D1E3FF" width="97.191" height="173.277"/>
<path fill="#CADEFF" d="M555.938,58.335c-4.132,0-7.494-3.362-7.494-7.494c0-4.131,3.362-7.493,7.494-7.493
s7.494,3.361,7.494,7.493C563.432,54.973,560.069,58.335,555.938,58.335z M555.938,44.833c-3.313,0-6.01,2.696-6.01,6.009
c0,3.314,2.696,6.01,6.01,6.01c3.314,0,6.011-2.696,6.011-6.01C561.948,47.528,559.252,44.833,555.938,44.833z"/>
<rect x="508.503" y="49.182" fill="#EEF9FF" width="100.391" height="173.277"/>
<rect x="516.912" y="57.593" fill="#FFFFFF" width="83.571" height="156.456"/>
<rect x="599.451" y="57.593" fill="#D1E3FF" width="1.032" height="156.456"/>
</g>
</g>
</g>
<g>
<path fill="#CADEFC" d="M526.497,284.068c0,0,1.034,17.479,40.735,17.479s40.738-17.479,40.738-17.479H526.497z"/>
<g>
<g>
<rect x="405.666" y="315.258" fill="#E3EEFF" width="40.542" height="166.987"/>
<rect x="413.45" y="482.245" fill="#E3EEFF" width="211.842" height="7.88"/>
<rect x="446.208" y="315.258" fill="#F3F8FF" width="186.869" height="166.987"/>
<rect x="462.147" y="378.359" fill="#E3EEFF" width="154.99" height="40.785"/>
<rect x="462.147" y="426.582" fill="#E3EEFF" width="154.99" height="40.785"/>
<path fill="#F3F8FF" d="M562.815,382.829h-46.347c-1.537,0-2.797-1.259-2.797-2.796l0,0c0-1.538,1.26-2.797,2.797-2.797
h46.347c1.538,0,2.797,1.259,2.797,2.797l0,0C565.612,381.57,564.354,382.829,562.815,382.829z"/>
<rect x="462.147" y="330.136" fill="#E3EEFF" width="154.99" height="40.785"/>
<path fill="#F3F8FF" d="M562.815,334.605h-46.347c-1.537,0-2.797-1.258-2.797-2.796l0,0c0-1.539,1.26-2.797,2.797-2.797
h46.347c1.538,0,2.797,1.258,2.797,2.797l0,0C565.612,333.348,564.354,334.605,562.815,334.605z"/>
<path fill="#F3F8FF" d="M562.815,431.054h-46.347c-1.537,0-2.797-1.26-2.797-2.797l0,0c0-1.538,1.26-2.796,2.797-2.796
h46.347c1.538,0,2.797,1.258,2.797,2.796l0,0C565.612,429.794,564.354,431.054,562.815,431.054z"/>
</g>
<rect x="446.208" y="301.547" fill="#E3EEFF" width="192.271" height="13.711"/>
<rect x="400" y="301.547" fill="#D1E3FF" width="46.208" height="13.711"/>
</g>
<g>
<g>
<rect x="421.268" y="253.257" fill="#E3EEFF" width="40.3" height="48.29"/>
<rect x="461.567" y="253.257" fill="#F3F8FF" width="71.498" height="48.29"/>
<ellipse fill="#FFFFFF" cx="497.316" cy="278.748" rx="16.492" ry="6.247"/>
<rect x="421.268" y="259.439" opacity="0.7" fill="#D1E3FF" width="112.218" height="3.313"/>
</g>
<g>
<rect x="419.045" y="251.252" fill="#E3EEFF" width="42.522" height="9.583"/>
<rect x="461.567" y="251.252" fill="#F3F8FF" width="73.721" height="9.583"/>
</g>
</g>
</g>
<g>
<g>
<polygon fill="#E3EEFF" points="257.998,277.403 104.393,277.403 113.976,490.125 267.581,490.125 "/>
<polygon fill="#F3F8FF" points="260.224,277.403 106.619,277.403 116.202,490.125 269.807,490.125 "/>
</g>
<g>
<g>
<rect x="140.494" y="441.835" fill="#E3EEFF" width="40.298" height="48.29"/>
<rect x="180.792" y="441.835" fill="#F3F8FF" width="192.896" height="48.29"/>
<rect x="140.494" y="448.018" opacity="0.7" fill="#D1E3FF" width="233.616" height="3.313"/>
</g>
<g>
<rect x="138.268" y="439.83" fill="#E3EEFF" width="42.524" height="9.582"/>
<rect x="180.792" y="439.83" fill="#F3F8FF" width="195.121" height="9.582"/>
</g>
</g>
<g>
<g>
<rect x="173.884" y="352.574" fill="#D1E3FF" width="52.433" height="87.256"/>
<rect x="226.317" y="352.574" fill="#E3EEFF" width="131.013" height="87.256"/>
<rect x="173.884" y="360.617" opacity="0.7" fill="#D1E3FF" width="183.992" height="4.311"/>
</g>
<g>
<rect x="170.987" y="342.607" fill="#D1E3FF" width="55.33" height="19.827"/>
<rect x="226.317" y="342.607" fill="#E3EEFF" width="133.906" height="19.827"/>
</g>
</g>
<g>
<circle fill="#D1E3FF" cx="115.471" cy="453.063" r="37.061"/>
<ellipse transform="matrix(0.7199 0.6941 -0.6941 0.7199 324.4629 54.022)" opacity="0.7" fill="#D1E3FF" cx="95.298" cy="429.022" rx="2.815" ry="5.756"/>
<ellipse transform="matrix(0.1889 0.982 -0.982 0.1889 504.672 231.5233)" opacity="0.7" fill="#D1E3FF" cx="112.185" cy="421.262" rx="2.816" ry="5.755"/>
<ellipse transform="matrix(0.3313 0.9435 -0.9435 0.3313 481.6153 187.6993)" opacity="0.7" fill="#D1E3FF" cx="108.385" cy="433.63" rx="3.53" ry="5.756"/>
</g>
</g>
</g>
</g>
<g>
<ellipse fill="#F0F6FF" cx="371.026" cy="540.347" rx="287.751" ry="16.805"/>
<g>
<path fill="#C0DAFF" d="M455.973,540.347H285.171c-11.929,0-21.69-9.761-21.69-21.69V109.691c0-11.929,9.761-21.69,21.69-21.69
h170.802c11.932,0,21.692,9.761,21.692,21.69v408.965C477.665,530.586,467.904,540.347,455.973,540.347z"/>
<path fill="#C0DAFF" d="M477.304,219.232h-14.138c-3.272,0-5.949-2.678-5.949-5.951V170.19c0-3.274,2.677-5.951,5.949-5.951
h14.138c3.272,0,5.951,2.676,5.951,5.951v43.091C483.255,216.555,480.576,219.232,477.304,219.232z"/>
<path fill="#C0DAFF" d="M478.786,266.117h-17.1c-2.46,0-4.47-2.01-4.47-4.47v-22.084c0-2.46,2.01-4.47,4.47-4.47h17.1
c2.457,0,4.469,2.01,4.469,4.47v22.084C483.255,264.106,481.243,266.117,478.786,266.117z"/>
<rect x="250.856" y="123.29" fill="#DCE9FF" width="1.484" height="19.623"/>
<rect x="250.856" y="148.355" fill="#DCE9FF" width="1.484" height="6.148"/>
<path opacity="0.6" fill="#0053CC" d="M448.546,540.347H277.742c-11.929,0-21.69-9.761-21.69-21.69V109.691
c0-11.929,9.761-21.69,21.69-21.69h170.804c11.929,0,21.69,9.761,21.69,21.69v408.965
C470.236,530.586,460.475,540.347,448.546,540.347z"/>
<circle fill="#0053CC" cx="363.144" cy="519.632" r="9.653"/>
<rect x="256.051" y="112.93" fill="#DCE9FF" width="214.185" height="388.725"/>
<rect x="256.051" y="112.93" fill="#DCE9FF" width="214.185" height="388.725"/>
<path fill="#FFFFFF" d="M437.063,250.607H289.223c-8.109,0-14.744-6.635-14.744-14.745v-88.254
c0-8.109,6.635-14.744,14.744-14.744h147.839c8.11,0,14.745,6.635,14.745,14.744v88.254
C451.808,243.973,445.173,250.607,437.063,250.607z"/>
<circle fill="#DCE9FF" cx="301.666" cy="160.05" r="19.637"/>
<path fill="#FFFFFF" d="M317.87,160.047c0,2.798-0.709,5.427-1.958,7.72c-2.734,5.051-8.086,8.487-14.249,8.487
c-6.16,0-11.514-3.436-14.247-8.487c-1.25-2.293-1.959-4.922-1.959-7.72c0-8.952,7.255-16.206,16.206-16.206
C310.617,143.841,317.87,151.096,317.87,160.047z"/>
<path fill="#C0DAFF" d="M315.913,167.767c-2.734,5.051-8.086,8.487-14.249,8.487c-6.16,0-11.514-3.436-14.247-8.487
c4.08-2.725,8.977-4.316,14.247-4.316C306.937,163.451,311.833,165.042,315.913,167.767z"/>
<circle fill="#C0DAFF" cx="301.666" cy="154.503" r="7.219"/>
<path fill="#FFFFFF" d="M440.93,302.702H285.358c-5.983,0-10.879-4.896-10.879-10.879v-19.458
c0-5.983,4.896-10.879,10.879-10.879H440.93c5.981,0,10.878,4.896,10.878,10.879v19.458
C451.808,297.807,446.911,302.702,440.93,302.702z"/>
<circle fill="#0053CC" cx="341.981" cy="99.474" r="3.415"/>
<path fill="#0053CC" d="M353.777,96.059h28.365c1.878,0,3.414,1.537,3.414,3.415l0,0c0,1.877-1.536,3.414-3.414,3.414h-28.365
c-1.876,0-3.415-1.536-3.415-3.414l0,0C350.362,97.596,351.901,96.059,353.777,96.059z"/>
</g>
<g>
<path opacity="0.6" fill="#0053CC" d="M477.51,306.688l20.966,57.798c1.135,3.13-0.496,6.62-3.627,7.756l-110.026,39.909
c-3.13,1.137-6.619-0.496-7.756-3.626l-20.964-57.797c-0.593-1.638-0.431-3.376,0.306-4.822
c0.678-1.315,1.826-2.392,3.322-2.934l110.026-39.91c1.493-0.542,3.065-0.452,4.428,0.122
C475.677,303.823,476.917,305.053,477.51,306.688z"/>
<path fill="#9FC6FF" d="M474.184,303.185l-31.441,51.755c-6.005,9.885-18.079,14.265-29.023,10.527l-57.311-19.561
c0.678-1.315,1.826-2.392,3.322-2.934l110.026-39.91C471.249,302.521,472.821,302.61,474.184,303.185z"/>
</g>
<g>
<path opacity="0.6" fill="#0053CC" d="M443.003,406.017l-1.007,52.066c-0.056,2.819-2.406,5.082-5.227,5.027l-99.117-1.917
c-2.819-0.055-5.083-2.406-5.028-5.226l1.007-52.067c0.027-1.474,0.686-2.799,1.709-3.719c0.935-0.832,2.171-1.335,3.516-1.31
l99.119,1.918c1.345,0.026,2.562,0.575,3.464,1.444C442.426,403.192,443.03,404.542,443.003,406.017z"/>
<path fill="#9FC6FF" d="M441.439,402.234l-40.598,31.35c-7.754,5.987-18.63,5.776-26.146-0.506l-39.354-32.896
c0.935-0.832,2.171-1.335,3.516-1.31l99.119,1.918C439.32,400.816,440.537,401.365,441.439,402.234z"/>
</g>
<g>
<defs>
<rect id="SVGID_1_" x="256.051" y="112.93" width="214.185" height="388.725"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" overflow="visible"/>
</clipPath>
<g clip-path="url(#SVGID_2_)">
<path fill="#0F264C" d="M380.653,202.277c0-8.905-2.969-43.945,11.625-46.914c4.618-4.865,27.485-5.364,31.001,7.008
c4.617,16.243-2.227,55.902-2.227,55.902L380.653,202.277"/>
<path fill="#0F264C" d="M424.086,218.356c-0.015,0-0.031-0.001-0.046-0.003c-0.203-0.024-0.348-0.21-0.322-0.413
c0.049-0.398,4.818-40.044-0.502-55.778c-1.452-4.299-5.614-7.32-11.721-8.506c-7.965-1.551-16.574,0.384-18.953,3.149
c-0.133,0.155-0.368,0.173-0.522,0.039c-0.155-0.133-0.173-0.368-0.04-0.523c2.781-3.236,12.146-4.854,19.657-3.394
c6.379,1.24,10.741,4.436,12.283,8.998c5.373,15.893,0.582,55.706,0.533,56.105
C424.431,218.218,424.271,218.356,424.086,218.356z"/>
<path fill="#FF8B7B" d="M410.993,226.636l0.361,0.792l0.455,0.932c0.303,0.63,0.641,1.274,0.978,1.907
c0.698,1.267,1.424,2.534,2.231,3.76c1.559,2.479,3.28,4.877,5.154,7.149c1.914,2.236,3.918,4.4,6.072,6.417
c1.106,0.968,2.187,1.979,3.344,2.897l1.738,1.371l0.412,0.325c0,0,0.03,0.041-0.007,0.019c-0.05-0.008-0.229-0.091-0.581-0.12
c-0.363-0.049-0.868,0.014-1.256,0.185c-0.374,0.144-0.568,0.319-0.634,0.409c-0.094,0.139,0.164-0.085,0.388-0.472
c0.486-0.799,0.981-2.089,1.378-3.415c0.829-2.702,1.396-5.737,1.914-8.78c0.518-3.057,0.922-6.177,1.254-9.316
c0.393-3.131,0.668-6.322,0.97-9.439l5.722-0.085c0.359,3.303,0.511,6.533,0.648,9.82c0.07,3.277,0.064,6.567-0.069,9.899
c-0.157,3.339-0.455,6.685-1.164,10.221c-0.394,1.78-0.838,3.585-1.806,5.654c-0.514,1.033-1.136,2.182-2.405,3.42
c-0.666,0.622-1.536,1.247-2.66,1.685c-1.146,0.438-2.466,0.577-3.627,0.435c-1.146-0.145-2.091-0.501-2.852-0.881
c-0.4-0.193-0.695-0.386-1.042-0.595l-0.565-0.379l-2.153-1.461c-1.436-0.977-2.79-2.066-4.148-3.152
c-2.662-2.232-5.185-4.639-7.494-7.239c-2.284-2.619-4.427-5.367-6.334-8.292c-0.953-1.461-1.827-2.981-2.67-4.529
c-0.415-0.786-0.829-1.561-1.211-2.383l-0.561-1.251c-0.194-0.448-0.347-0.809-0.582-1.423L410.993,226.636z"/>
<polygon fill="#DCE9FF" points="416.016,234.309 406.038,248.064 410.161,252.118 420.78,239.352 "/>
<path fill="#9FC6FF" d="M400.375,216.154c11.233,3.022,18.977,18.725,18.977,18.725l-12.975,18.186
c0,0-15.588-19.608-15.21-25.844C391.56,220.728,393.605,214.334,400.375,216.154z"/>
<path fill="#FF8B7B" d="M435.334,222.696l-2.967-11.813l11.332,3.305c0,0-0.323,7.976-4.229,10.582L435.334,222.696z"/>
<polygon fill="#FF8B7B" points="435.936,201.292 443.892,205.315 443.699,214.188 432.367,210.883 "/>
<path fill="#FF8B7B" d="M293.684,205.664l-10.372-6.388l10.421-5.544c0,0,5.337,5.938,4.36,10.529L293.684,205.664z"/>
<polygon fill="#FF8B7B" points="279.174,189.917 287.678,187.243 293.733,193.731 283.313,199.276 "/>
<polygon fill="#FF8B7B" points="288.339,492.296 299.25,493.361 310.604,467.391 299.693,466.325 "/>
<polygon fill="#FF8B7B" points="177.605,412.792 183.829,422.217 207.658,410.831 201.434,401.406 "/>
<path fill="#14365B" d="M186.438,421.234l-3.699-12.14c-0.136-0.442-0.551-0.707-1.001-0.638l-10.026,1.545
c-1.039,0.16-1.721,1.304-1.393,2.317c1.362,4.211,2.231,6.174,3.859,11.513c1.001,3.283,2.732,10.696,4.115,15.23
c1.351,4.437,5.939,3.41,5.771,1.396c-0.759-9.021,0.733-13.635,2.261-17.218C186.6,422.597,186.634,421.881,186.438,421.234z"
/>
<path fill="#14365B" d="M300.699,489.99h-13.401c-0.487,0-0.927,0.34-1.058,0.814l-2.913,10.602
c-0.303,1.101,0.507,2.141,1.634,2.122c4.682-0.082,6.969-0.355,12.861-0.355c3.626,0,12.997,0.377,18.004,0.377
c4.896,0,5.919-4.951,3.893-5.399c-9.084-2.01-14.319-4.782-17.122-7.427C302.09,490.247,301.412,489.99,300.699,489.99z"/>
<polygon fill="#EA7063" points="310.598,467.398 304.749,480.785 293.365,480.785 299.683,466.331 "/>
<polygon fill="#EA7063" points="201.426,401.408 207.652,410.837 195.368,416.701 189.139,407.271 "/>
<path fill="#9FC6FF" d="M410.115,221.963c0,0,3.688,4.353-39.089,56.116c-15.71-9.193-31.949-18.695-39.596-23.169
c10.095-15.727,15.928-25.653,27.578-63.232c0,0,9.351,3.049,18.109,7.623c11.855,6.192,17.32,10.05,17.98,10.522
C402.406,215.047,410.115,221.963,410.115,221.963z"/>
<path fill="#FF8B7B" d="M390.745,180.099c-2.251,6.449-7.32,17.711-13.628,19.202c0,0-1.853,6.794,8.897,13.085
c11.82,6.916,9.083-2.563,9.083-2.563c-5.55-5.316-2.583-10.004,1.171-13.843L390.745,180.099z"/>
<g>
<path fill="#FF8B7B" d="M404.924,217.496c-2.787-2.327-6.357-5.191-9.826-7.677c-5.547-3.967-11.139-6.943-17.983-10.522
c-3.501-1.835-7.093-3.428-10.15-4.654c-0.49,0.819-0.093,3.316,1.414,6.971c5.698,7.345,18.93,18.158,29.974,20.305
C403.486,221.183,405.097,219.557,404.924,217.496z"/>
<path fill="#DCE9FF" d="M368.378,201.615c2.064,5.009,6.22,12.206,13.138,20.363c7.822,0.543,13.204,0.464,16.836-0.058
C387.308,219.773,374.076,208.96,368.378,201.615z"/>
</g>
<path fill="#EA7063" d="M392.994,186.576l3.271,9.397c-0.892,0.906-1.732,1.861-2.422,2.867
c-2.255-1.799-4.677-6.18-3.429-8.914C391.037,188.565,392.435,187.055,392.994,186.576z"/>
<path fill="#FF8B7B" d="M390.861,167.271c-3.069,10.783-4.6,15.282-1.177,22.576c5.146,10.973,19.061,12.384,25.291,2.738
c5.606-8.685,9.684-24.859,0.833-32.698C407.088,152.166,393.93,156.49,390.861,167.271z"/>
<path fill="#0F264C" d="M387.703,174.037c7.666,2.858,25.703-6.657,30.609-12.49c0.659-8.988-20.428-5.442-20.428-5.442
S386.631,152.683,387.703,174.037z"/>
<path fill="#FF8B7B" d="M385.866,176.217c-0.552,2.258-0.011,4.559,1.006,6.177c1.529,2.432,4.217,1.529,5.401-0.921
c1.067-2.205,1.559-6.128-0.752-7.717C389.247,172.193,386.498,173.637,385.866,176.217z"/>
<path fill="#0053CC" d="M371.026,278.08c0,0,0.649,101.694-17.386,131.051c-18.76,30.536-43.219,67.759-43.219,67.759
l-21.172-1.023c0,0,24.695-55.091,34.01-80.657c12.841-35.246,18.771-134.097,18.771-134.097L371.026,278.08z"/>
<path fill="#004DAA" d="M348.498,280.892c-2.803,2.068-5.847,5.863-8.739,10.169c-0.658,7.56-1.461,16.073-2.415,24.979
C343.799,307.293,348.909,291.901,348.498,280.892z"/>
<path fill="#0053CC" d="M360.57,271.96c0,0-44.813,63.603-72.75,97.881c-22.564,27.685-87.868,47.456-87.868,47.456
l-7.967-13.363c0,0,51.954-28.991,67.447-47.725c49.588-59.953,48.974-91.05,71.998-101.299L360.57,271.96z"/>
<path fill="#14365B" d="M332.199,252.239l-3.861,2.5c-0.299,0.193-0.138,0.666,0.32,0.932l41.524,24.298
c0.357,0.21,0.757,0.207,0.91-0.004l2.431-3.335c0.167-0.23-0.021-0.62-0.41-0.848l-40.098-23.462
C332.721,252.146,332.39,252.115,332.199,252.239z"/>
<path fill="#0053CC" d="M334.959,259.875l-1.074-0.629c-0.214-0.125-0.313-0.33-0.219-0.456l3.199-4.311
c0.093-0.126,0.345-0.126,0.558-0.001l1.074,0.629c0.215,0.125,0.313,0.331,0.219,0.455l-3.199,4.311
C335.425,259.999,335.172,259.999,334.959,259.875z"/>
<path fill="#0053CC" d="M366.94,278.588l-1.074-0.629c-0.215-0.125-0.313-0.33-0.219-0.457l3.199-4.31
c0.093-0.126,0.345-0.126,0.56-0.001l1.072,0.627c0.215,0.126,0.313,0.332,0.22,0.457l-3.198,4.31
C367.405,278.712,367.153,278.712,366.94,278.588z"/>
<path fill="#0053CC" d="M350.95,269.231l-1.074-0.629c-0.213-0.125-0.312-0.33-0.219-0.457l3.197-4.31
c0.094-0.126,0.346-0.126,0.56-0.001l1.075,0.629c0.213,0.125,0.312,0.33,0.218,0.455l-3.197,4.311
C351.415,269.356,351.164,269.356,350.95,269.231z"/>
<ellipse transform="matrix(-0.9432 -0.3323 0.3323 -0.9432 732.0203 477.6157)" fill="#0F264C" cx="406.847" cy="176.219" rx="1.078" ry="1.651"/>
<ellipse transform="matrix(-0.9432 -0.3323 0.3323 -0.9432 749.7571 487.4925)" fill="#0F264C" cx="416.56" cy="179.641" rx="1.078" ry="1.649"/>
<path fill="#0F264C" d="M416.843,178.046l2.274,0.132C419.117,178.178,417.49,179.417,416.843,178.046z"/>
<path fill="#FF5652" d="M412.456,179.854c0,0,0.153,4.215,1.13,6.564c-1.507,0.66-3.265-0.503-3.265-0.503L412.456,179.854z"/>
<path fill="#0F264C" d="M406.193,188.249c-0.028,0-0.06-0.006-0.088-0.016c-4.046-1.424-4.921-4.848-4.956-4.994
c-0.034-0.144,0.053-0.289,0.196-0.323c0.15-0.035,0.289,0.055,0.323,0.197c0.009,0.032,0.852,3.292,4.613,4.616
c0.14,0.048,0.212,0.202,0.163,0.341C406.406,188.18,406.304,188.249,406.193,188.249z"/>
<path fill="#0F264C" d="M405.399,172.466c-0.19,0-0.374-0.101-0.472-0.281c-0.141-0.26-0.043-0.584,0.218-0.725
c2.603-1.404,4.789-0.25,4.88-0.2c0.262,0.142,0.357,0.466,0.215,0.726c-0.143,0.259-0.47,0.352-0.724,0.216
c-0.087-0.046-1.79-0.918-3.864,0.2C405.573,172.445,405.486,172.466,405.399,172.466z"/>
<path fill="#0F264C" d="M421.706,176.391c-0.238,0-0.456-0.161-0.518-0.403c-0.588-2.313-2.446-2.971-2.465-2.977
c-0.279-0.095-0.429-0.4-0.332-0.68c0.094-0.278,0.397-0.431,0.678-0.335c0.099,0.035,2.428,0.858,3.156,3.728
c0.072,0.287-0.102,0.577-0.387,0.651C421.794,176.385,421.751,176.391,421.706,176.391z"/>
<path fill="#FF8B7B" d="M355.737,208.7c-2.809,2.251-5.486,4.057-8.32,5.919c-2.806,1.842-5.713,3.515-8.676,5.106
c-5.899,3.217-12.151,5.907-18.712,7.922c-0.807,0.275-1.659,0.46-2.488,0.691c-0.867,0.216-1.596,0.445-2.575,0.648
c-2.008,0.452-4.238,0.617-6.495,0.337c-2.258-0.274-4.539-1.062-6.467-2.264c-1.937-1.202-3.493-2.755-4.728-4.368
c-2.47-3.261-3.716-6.78-4.632-10.188c-0.458-1.71-0.745-3.434-0.955-5.148c-0.213-1.74-0.346-3.375-0.335-5.232l5.701-0.483
c0.668,2.808,1.627,5.817,2.775,8.465c1.13,2.679,2.632,5.119,4.31,6.81c1.719,1.708,3.407,2.44,5.261,2.452
c0.946-0.014,1.968-0.13,3.079-0.484c1.297-0.415,2.814-0.887,4.196-1.399c5.642-2.095,11.174-4.736,16.518-7.792
c2.688-1.497,5.281-3.183,7.884-4.835c2.557-1.652,5.188-3.501,7.47-5.196L355.737,208.7z"/>
<polygon fill="#DCE9FF" points="337.378,204.812 342.512,220.334 347.335,217.447 342.82,202.049 "/>
<path fill="#9FC6FF" d="M359.008,191.678c-4.673-1.115-19.056,9.843-19.056,9.843l6.102,19.459c0,0,15.093-8.351,16.426-14.454
C363.869,200.171,364.34,192.951,359.008,191.678z"/>
<path fill="#407BFF" d="M187.583,427.595c-0.252,0-0.492-0.067-0.715-0.199c-1.233-0.733-1.578-3.358-1.672-4.858
c-0.007-0.107,0.051-0.207,0.146-0.256c0.094-0.047,0.208-0.035,0.292,0.033c0.355,0.295,3.472,2.93,3.289,4.361
c-0.029,0.227-0.151,0.535-0.565,0.728C188.087,427.53,187.828,427.595,187.583,427.595z M185.782,423.148
c0.197,1.996,0.693,3.391,1.359,3.786c0.285,0.171,0.606,0.162,0.988-0.015c0.208-0.097,0.248-0.217,0.261-0.313
C188.487,425.854,186.997,424.24,185.782,423.148z"/>
<path fill="#407BFF" d="M189.455,424.369c-1.365,0-3.444-0.961-4.177-1.655c-0.07-0.064-0.098-0.163-0.075-0.255
c0.021-0.093,0.09-0.166,0.181-0.196c0.132-0.04,3.247-0.973,4.646-0.115c0.371,0.228,0.598,0.558,0.672,0.979
c0.117,0.664-0.232,0.962-0.451,1.078C190.039,424.319,189.765,424.369,189.455,424.369z M186.043,422.64
c1.133,0.778,3.261,1.474,3.954,1.095c0.114-0.063,0.238-0.175,0.177-0.515c-0.046-0.268-0.186-0.469-0.423-0.616
C188.915,422.089,187.094,422.384,186.043,422.64z"/>
<path fill="#407BFF" d="M306.643,492.203c-1.292,0-2.694-0.249-3.665-0.467c-0.113-0.024-0.197-0.117-0.209-0.231
c-0.011-0.113,0.049-0.224,0.152-0.271c0.903-0.426,5.469-2.499,6.68-1.674c0.168,0.111,0.36,0.33,0.338,0.729
c-0.03,0.536-0.26,0.968-0.68,1.286C308.641,492.043,307.677,492.203,306.643,492.203z M303.902,491.377
c1.462,0.266,3.979,0.568,5.034-0.228c0.294-0.222,0.448-0.513,0.468-0.891c0.009-0.157-0.046-0.219-0.101-0.256
C308.644,489.56,305.902,490.51,303.902,491.377z"/>
<path fill="#407BFF" d="M303.035,491.743c-0.064,0-0.125-0.021-0.174-0.063c-0.076-0.065-0.11-0.167-0.087-0.265
c0.046-0.207,1.168-5.062,3.837-4.727c0.689,0.083,0.879,0.43,0.917,0.706c0.17,1.264-2.88,3.709-4.392,4.328
C303.103,491.736,303.068,491.743,303.035,491.743z M306.366,487.21c-1.603,0-2.565,2.601-2.919,3.769
c1.542-0.847,3.649-2.777,3.551-3.51c-0.018-0.131-0.169-0.216-0.449-0.248C306.487,487.213,306.427,487.21,306.366,487.21z"/>
<path fill="#0F264C" d="M407.129,174.624l2.275,0.132C409.404,174.756,407.776,175.995,407.129,174.624z"/>
</g>
</g>
<g>
<path opacity="0.8" fill="#0053CC" d="M537.227,70.192H427.105c-9.795,0-17.809,8.014-17.809,17.809V122.1
c0,9.795,8.014,17.809,17.809,17.809h9.233v17.516l17.518-17.516h83.37c9.795,0,17.81-8.014,17.81-17.809V88.001
C555.036,78.206,547.021,70.192,537.227,70.192z"/>
<g>
<path fill="#9FC6FF" d="M534.652,92.542H429.678c-2.255,0-4.083-1.829-4.083-4.084l0,0c0-2.256,1.828-4.084,4.083-4.084
h104.975c2.255,0,4.085,1.829,4.085,4.084l0,0C538.737,90.713,536.907,92.542,534.652,92.542z"/>
</g>
<g>
<path fill="#9FC6FF" d="M534.652,108.751h-67.3c-2.255,0-4.085-1.829-4.085-4.084l0,0c0-2.256,1.83-4.084,4.085-4.084h67.3
c2.255,0,4.085,1.828,4.085,4.084l0,0C538.737,106.922,536.907,108.751,534.652,108.751z"/>
</g>
<g>
<path fill="#9FC6FF" d="M447.388,108.751h-17.71c-2.255,0-4.083-1.829-4.083-4.084l0,0c0-2.256,1.828-4.084,4.083-4.084h17.71
c2.255,0,4.084,1.828,4.084,4.084l0,0C451.472,106.922,449.643,108.751,447.388,108.751z"/>
</g>
<g>
<path fill="#9FC6FF" d="M508.433,124.96h-78.755c-2.255,0-4.083-1.828-4.083-4.084l0,0c0-2.256,1.828-4.084,4.083-4.084h78.755
c2.257,0,4.084,1.828,4.084,4.084l0,0C512.517,123.132,510.689,124.96,508.433,124.96z"/>
</g>
</g>
</g>
</g>
</g>
<g>
<g>
<g>
<g>
<g>
<g>
<rect y="486.271" fill="#E6E6E6" width="737" height="0.369"/>
<rect x="117.123" y="498.093" fill="#E6E6E6" width="50.712" height="0.368"/>
<rect x="177.536" y="498.093" fill="#E6E6E6" width="15.152" height="0.368"/>
<rect x="238.915" y="490.852" fill="#E6E6E6" width="28.534" height="0.369"/>
<rect x="571.061" y="506.271" fill="#E6E6E6" width="63.668" height="0.368"/>
<rect x="647.851" y="506.271" fill="#E6E6E6" width="9.336" height="0.368"/>
<rect x="449.079" y="493.342" fill="#E6E6E6" width="138.077" height="0.369"/>
<path fill="#E6E6E6" d="M349.358,420.535H64.73c-4.639,0-8.414-3.774-8.414-8.416V12.03c0-4.639,3.775-8.413,8.414-8.413
h284.628c4.638,0,8.412,3.774,8.412,8.413v400.089C357.771,416.761,353.996,420.535,349.358,420.535z M64.73,3.985
c-4.437,0-8.045,3.609-8.045,8.045v400.089c0,4.438,3.608,8.047,8.045,8.047h284.628c4.435,0,8.043-3.609,8.043-8.047V12.03
c0-4.436-3.608-8.045-8.043-8.045H64.73z"/>
<path fill="#E6E6E6" d="M668.18,420.535H383.552c-4.638,0-8.411-3.774-8.411-8.416V12.03c0-4.639,3.773-8.413,8.411-8.413
H668.18c4.638,0,8.413,3.774,8.413,8.413v400.089C676.593,416.761,672.817,420.535,668.18,420.535z M383.552,3.985
c-4.435,0-8.043,3.609-8.043,8.045v400.089c0,4.438,3.608,8.047,8.043,8.047H668.18c4.437,0,8.044-3.609,8.044-8.047V12.03
c0-4.436-3.607-8.045-8.044-8.045H383.552z"/>
</g>
</g>
</g>
<g>
<g>
<rect x="514.35" y="285.385" fill="#F5F5F5" width="103.276" height="200.887"/>
<rect x="609.107" y="285.385" fill="#F0F0F0" width="8.519" height="200.887"/>
<rect x="284.502" y="291.117" fill="#E0E0E0" width="237.805" height="43.4"/>
<path fill="#E0E0E0" d="M383.669,486.421H281.718c-0.815,0-1.474-0.659-1.474-1.474c0-0.815,0.659-1.474,1.474-1.474h101.951
c14.738,0,16.704-4.296,16.704-21.374V246.897c0-0.814,0.659-1.474,1.476-1.474c0.814,0,1.474,0.66,1.474,1.474V462.1
C403.322,480.35,400.481,486.421,383.669,486.421z"/>
<rect x="293.659" y="286.154" fill="#F0F0F0" width="321.66" height="15.067"/>
<rect x="192.688" y="285.385" fill="#F5F5F5" width="103.278" height="200.887"/>
<rect x="287.45" y="285.385" fill="#F0F0F0" width="8.516" height="200.887"/>
</g>
<g>
<rect x="134.202" y="128.529" fill="#FAFAFA" width="88.631" height="357.742"/>
<rect x="139.067" y="138.976" fill="#F5F5F5" width="78.901" height="78.901"/>
<path fill="#E0E0E0" d="M161.054,137.931L161.054,137.931h34.928l0,0c0,4.519-3.664,8.181-8.182,8.181h-18.564
C164.717,146.111,161.054,142.449,161.054,137.931z"/>
<rect x="139.067" y="224.958" fill="#F5F5F5" width="78.901" height="78.902"/>
<rect x="139.067" y="310.942" fill="#F5F5F5" width="78.901" height="78.9"/>
<rect x="139.067" y="396.925" fill="#F5F5F5" width="78.901" height="78.902"/>
<path fill="#E0E0E0" d="M161.054,223.914L161.054,223.914h34.928l0,0c0,4.518-3.664,8.181-8.182,8.181h-18.564
C164.717,232.095,161.054,228.432,161.054,223.914z"/>
<path fill="#E0E0E0" d="M161.054,309.898L161.054,309.898h34.928l0,0c0,4.518-3.664,8.18-8.182,8.18h-18.564
C164.717,318.078,161.054,314.416,161.054,309.898z"/>
<path fill="#E0E0E0" d="M161.054,395.879L161.054,395.879h34.928l0,0c0,4.521-3.664,8.183-8.182,8.183h-18.564
C164.717,404.062,161.054,400.399,161.054,395.879z"/>
<rect x="89.934" y="128.529" fill="#F0F0F0" width="44.268" height="357.742"/>
</g>
<g>
<polygon fill="#F0F0F0" points="389.716,285.385 367.434,285.385 372.854,242.018 395.138,242.018 "/>
<polygon fill="#F5F5F5" points="394.642,285.385 372.36,285.385 377.781,242.018 400.063,242.018 "/>
<polygon fill="#F0F0F0" points="442.438,285.385 426.331,285.385 423.237,280.471 439.347,280.471 "/>
<polygon fill="#FAFAFA" points="528.754,285.385 431.255,285.385 428.163,280.471 515.609,280.471 "/>
<path fill="#F0F0F0" d="M319.058,272.937h7.043c6.875,0,12.447,5.574,12.447,12.448l0,0h-31.936l0,0
C306.612,278.511,312.185,272.937,319.058,272.937z"/>
<polygon fill="#F0F0F0" points="397.354,263.701 375.071,263.701 377.781,242.018 400.063,242.018 "/>
<path fill="#F0F0F0" d="M315.479,258.51h157.615c1.314,0,2.33-1.152,2.167-2.456l-12.145-97.174
c-0.137-1.093-1.067-1.914-2.17-1.914H303.332c-1.314,0-2.331,1.152-2.167,2.456l12.146,97.174
C313.446,257.69,314.377,258.51,315.479,258.51z"/>
<path fill="#F5F5F5" d="M317.819,258.51h157.616c1.314,0,2.33-1.152,2.167-2.456l-12.145-97.174
c-0.137-1.093-1.067-1.914-2.169-1.914H305.674c-1.314,0-2.332,1.152-2.168,2.456l12.146,97.174
C315.789,257.69,316.718,258.51,317.819,258.51z"/>
<path fill="#E0E0E0" d="M472.519,253.139l-11.369-90.955c-0.038-0.306-0.297-0.536-0.604-0.536H309.196
c-0.367,0-0.652,0.323-0.606,0.688l11.369,90.955c0.041,0.306,0.3,0.535,0.608,0.535h151.345
C472.279,253.826,472.563,253.504,472.519,253.139z"/>
<path fill="#FAFAFA" d="M382.242,281.32h29.063c1.996,0,3.614,1.618,3.614,3.614v0.45h-36.292v-0.45
C378.628,282.938,380.247,281.32,382.242,281.32z"/>
<path fill="#F0F0F0" d="M361.824,281.32h17.391c1.995,0,3.614,1.618,3.614,3.614v0.45h-24.62v-0.45
C358.209,282.938,359.827,281.32,361.824,281.32z"/>
</g>
<path fill="#E0E0E0" d="M171.658,88.127c0.009-0.021,0.004-0.043,0.012-0.064c0.34-1.138,0.653-2.288,0.937-3.445
c1.717,2.224,3.384,2.788,4.626,2.788c0.137,0,0.27-0.007,0.398-0.019c2.459-0.238,4.82-2.624,6.313-6.382
c0.056-0.142,0.048-0.3-0.02-0.435c-0.069-0.136-0.191-0.235-0.338-0.274c-4.792-1.25-8.597,0.612-10.413,1.806
c0.222-1.092,0.41-2.189,0.564-3.286c0.401,0.071,0.798,0.118,1.181,0.118c4.019,0,6.967-3.58,7.105-3.753
c0.106-0.131,0.144-0.305,0.101-0.468c-0.043-0.164-0.162-0.295-0.317-0.358c-2.394-0.948-4.422-1.031-6.028-0.243
c-0.994,0.487-1.794,1.309-2.375,2.401c-0.862-2.588-3.403-7.537-10.456-8.932c-0.154-0.031-0.307,0.006-0.426,0.101
c-0.121,0.094-0.196,0.235-0.205,0.389c-0.207,3.647-0.092,8.107,2.646,10.234c1.04,0.806,2.344,1.209,3.938,1.209
c1.104,0,2.358-0.204,3.75-0.589c-0.383,2.616-0.964,5.232-1.688,7.793c-1.425-1.886-5.142-6.111-10.783-7.568
c-0.283-0.077-0.571,0.096-0.645,0.378c-0.828,3.138-0.405,5.686,1.225,7.369c1.343,1.388,3.443,2.096,6.097,2.096
c1.088,0,2.275-0.125,3.535-0.365c-0.67,2.148-1.423,4.246-2.225,6.262c-1.638-1.449-6.457-5.127-11.695-3.596
c-0.145,0.042-0.263,0.144-0.328,0.279c-0.065,0.135-0.071,0.292-0.013,0.431c1.426,3.475,3.043,5.402,5.081,6.066
c0.533,0.172,1.09,0.26,1.678,0.26c1.289,0,2.732-0.428,4.388-1.286c-1.131,2.662-2.32,5.148-3.46,7.369
c-1.235-1.333-4.598-4.082-10.563-2.806c-0.262,0.056-0.441,0.297-0.417,0.565c0.193,2.164,1.729,4.226,3.822,5.13
c0.58,0.251,1.421,0.502,2.456,0.502c0.969,0,2.111-0.23,3.373-0.873c-1.163,2.137-2.216,3.924-3.044,5.273h-10.026
c-1.586-2.728-3.426-6.11-5.224-9.924c0.88,0.259,1.746,0.399,2.575,0.399c1.776,0,3.397-0.586,4.7-1.743
c2.008-1.781,2.878-4.592,2.162-6.996c-0.072-0.245-0.307-0.405-0.563-0.375c-5.844,0.616-8.787,4.499-9.913,6.451
c-1.182-2.649-2.319-5.465-3.324-8.381c1.54,0.797,2.928,1.217,4.171,1.217c0.599,0,1.17-0.092,1.71-0.276
c2.887-0.983,4.632-4.53,6.086-8.216c0.058-0.14,0.049-0.296-0.017-0.431c-0.066-0.135-0.187-0.235-0.333-0.275
c-5.943-1.654-10.758,4.028-12.254,6.054c-0.779-2.446-1.45-4.948-1.966-7.466c1.338,0.243,2.6,0.371,3.762,0.371
c3.023,0,5.404-0.815,6.904-2.408c1.779-1.888,2.211-4.712,1.25-8.167c-0.078-0.28-0.363-0.443-0.65-0.37
c-6.072,1.657-10.059,6.271-11.66,8.452c-0.078-0.45-0.154-0.901-0.219-1.352c-0.018-0.122-0.078-0.221-0.154-0.306
c-0.639-1.924-1.756-3.317-3.251-4.026c-1.771-0.839-3.995-0.717-6.61,0.36c-0.155,0.063-0.272,0.198-0.313,0.362
s-0.001,0.336,0.107,0.467c0.155,0.187,3.398,4.019,7.759,4.019c0.453,0,0.919-0.06,1.393-0.15
c0.194,1.252,0.427,2.505,0.701,3.752c-1.997-1.285-6.23-3.319-11.529-1.86c-0.146,0.041-0.268,0.141-0.335,0.278
c-0.066,0.137-0.072,0.294-0.013,0.435c1.694,4.109,4.318,6.696,7.02,6.921c0.118,0.009,0.242,0.015,0.372,0.015
c1.371,0,3.226-0.63,5.111-3.162c0.749,2.889,1.668,5.731,2.692,8.468c-2.551-1.204-8.285-3.294-12.387-0.12
c-0.227,0.177-0.273,0.5-0.104,0.732c2.649,3.612,5.102,5.369,7.5,5.369c0.02,0,0.04,0,0.06-0.001
c1.993-0.023,3.897-1.255,5.803-3.731c1.09,2.716,2.256,5.305,3.427,7.704c-2.548-1.586-5.353-1.334-8.657,0.751
c-0.15,0.094-0.242,0.255-0.248,0.432c-0.005,0.176,0.078,0.343,0.22,0.446c0.186,0.134,3.344,2.373,6.665,2.373
c1.19,0,2.399-0.292,3.502-1.065c0.941,1.811,1.862,3.482,2.717,4.972h-4.555v2.59h1.659l1.367,13.736h20.171l1.369-13.736
h1.659v-2.59h-9.05c1.007-1.667,2.288-3.889,3.657-6.507c0.04-0.051,0.069-0.106,0.088-0.167
c0.344-0.661,0.692-1.344,1.045-2.053c1.45,1.965,3.377,3.047,5.455,3.047c0.225,0,0.449-0.013,0.676-0.038
c2.431-0.271,4.654-2.007,5.401-4.224c0.083-0.242-0.02-0.508-0.242-0.633c-4.253-2.377-8.17-1.303-10.201-0.402
c0.761-1.619,1.52-3.333,2.249-5.116c0.049-0.07,0.085-0.148,0.095-0.235c0.203-0.501,0.405-1.008,0.602-1.521
c1.757,2.212,3.503,3.303,5.316,3.303c0.001,0,0.003,0,0.005,0c2.206-0.003,4.437-1.629,6.817-4.974
c0.167-0.234,0.117-0.558-0.112-0.73c-3.747-2.819-8.893-0.896-11.219,0.234c0.472-1.324,0.918-2.672,1.33-4.041
C171.646,88.14,171.655,88.136,171.658,88.127z"/>
<g>
<g>
<rect x="517.855" y="81.908" fill="#E0E0E0" width="75.378" height="82.772"/>
<path fill="#EBEBEB" d="M583.938,85.306c-0.066,0-0.129-0.017-0.189-0.052c-0.179-0.107-17.977-10.691-23.636-10.691
c-5.657,0-22.634,10.581-22.805,10.688c-0.169,0.108-0.397,0.057-0.506-0.117c-0.109-0.173-0.057-0.4,0.116-0.508
c0.706-0.441,17.328-10.799,23.194-10.799c5.862,0,23.276,10.354,24.012,10.795c0.178,0.104,0.233,0.331,0.131,0.505
C584.185,85.241,584.063,85.306,583.938,85.306z"/>
<rect x="523.537" y="81.908" fill="#F5F5F5" width="77.86" height="82.772"/>
<rect x="530.061" y="88.43" fill="#FFFFFF" width="64.817" height="69.727"/>
</g>
<path fill="#E0E0E0" d="M580.225,123.293c0,9.806-7.949,17.755-17.759,17.755c-9.805,0-17.754-7.949-17.754-17.755
c0-9.806,7.949-17.755,17.754-17.755C572.275,105.539,580.225,113.488,580.225,123.293z"/>
</g>
<g>
<path fill="#E6E6E6" d="M560.958,385.829h66.066c12.611,0,22.907-10.089,23.162-22.699l2.465-120.951
c0.192-9.454-7.419-17.221-16.874-17.221h-41.416c-8.578,0-15.796,6.439-16.765,14.966L560.958,385.829z"/>
<path fill="#E6E6E6" d="M532.338,373.171h64.653v12.658h-70.402c-1.821,0-3.3-1.478-3.3-3.3v-0.311
C523.289,377.221,527.341,373.171,532.338,373.171z"/>
<path fill="#E6E6E6" d="M591.46,487.93c-0.686,0-1.298-0.478-1.441-1.175l-20.648-99.452h-35.958l-20.647,99.452
c-0.167,0.798-0.95,1.305-1.743,1.146c-0.798-0.167-1.311-0.946-1.144-1.744l20.891-100.627
c0.143-0.685,0.745-1.175,1.443-1.175h38.356c0.699,0,1.301,0.49,1.445,1.175l20.893,100.627
c0.164,0.798-0.349,1.577-1.146,1.744C591.659,487.921,591.559,487.93,591.46,487.93z"/>
<path fill="#E6E6E6" d="M569.04,487.93c-0.099,0-0.199-0.009-0.299-0.029c-0.799-0.167-1.312-0.946-1.146-1.744l20.893-100.627
c0.143-0.685,0.745-1.175,1.445-1.175h38.354c0.699,0,1.301,0.49,1.445,1.175l20.891,100.627
c0.166,0.798-0.346,1.577-1.145,1.744c-0.8,0.159-1.578-0.348-1.745-1.146l-20.645-99.452h-35.96l-20.647,99.452
C570.337,487.452,569.724,487.93,569.04,487.93z"/>
</g>
</g>
</g>
<g>
<ellipse fill="#F5F5F5" cx="368.5" cy="536.151" rx="285.792" ry="16.691"/>
</g>
<g>
<g>
<g>
<path fill="#407BFF" d="M393.715,522.468c-0.932,0-1.766-0.653-1.958-1.601l-28.013-137.912h-48.762l-28.014,137.912
c-0.22,1.083-1.27,1.782-2.356,1.561c-1.083-0.219-1.782-1.275-1.563-2.357l28.339-139.512c0.19-0.933,1.008-1.602,1.959-1.602
h52.032c0.95,0,1.771,0.669,1.958,1.602l28.338,139.515c0.221,1.079-0.479,2.136-1.561,2.354
C393.979,522.457,393.846,522.468,393.715,522.468z"/>
<path fill="#407BFF" d="M315.422,522.468c-0.932,0-1.765-0.653-1.958-1.601l-28.013-137.912h-48.762l-28.015,137.912
c-0.218,1.083-1.27,1.782-2.357,1.561c-1.083-0.219-1.781-1.275-1.56-2.357l28.338-139.512
c0.188-0.933,1.009-1.602,1.959-1.602h52.03c0.95,0,1.771,0.669,1.959,1.601l28.339,139.513
c0.222,1.082-0.478,2.139-1.561,2.357C315.687,522.457,315.554,522.468,315.422,522.468z"/>
<path fill="#407BFF" d="M326.384,380.956H236.77c-17.11,0-31.075-13.685-31.423-30.79l-3.34-136.196
c-0.262-12.823,10.062-23.359,22.888-23.359h56.177c11.641,0,21.426,8.735,22.745,20.299L326.384,380.956z"/>
<path fill="#407BFF" d="M365.207,363.785h-87.697v17.171h95.496c2.474,0,4.478-2.004,4.478-4.476v-0.421
C377.482,369.28,371.986,363.785,365.207,363.785z"/>
</g>
<g opacity="0.3">
<path d="M393.715,522.468c-0.932,0-1.766-0.653-1.958-1.601l-28.013-137.912h-48.762l-28.014,137.912
c-0.22,1.083-1.27,1.782-2.356,1.561c-1.083-0.219-1.782-1.275-1.563-2.357l28.339-139.512c0.19-0.933,1.008-1.602,1.959-1.602
h52.032c0.95,0,1.771,0.669,1.958,1.602l28.338,139.515c0.221,1.079-0.479,2.136-1.561,2.354
C393.979,522.457,393.846,522.468,393.715,522.468z"/>
<path d="M315.422,522.468c-0.932,0-1.765-0.653-1.958-1.601l-28.013-137.912h-48.762l-28.015,137.912
c-0.218,1.083-1.27,1.782-2.357,1.561c-1.083-0.219-1.781-1.275-1.56-2.357l28.338-139.512
c0.188-0.933,1.009-1.602,1.959-1.602h52.03c0.95,0,1.771,0.669,1.959,1.601l28.339,139.513
c0.222,1.082-0.478,2.139-1.561,2.357C315.687,522.457,315.554,522.468,315.422,522.468z"/>
<path d="M326.384,380.956H236.77c-17.11,0-31.075-13.685-31.423-30.79l-3.34-136.196
c-0.262-12.823,10.062-23.359,22.888-23.359h56.177c11.641,0,21.426,8.735,22.745,20.299L326.384,380.956z"/>
<path d="M365.207,363.785h-87.697v17.171h95.496c2.474,0,4.478-2.004,4.478-4.476v-0.421
C377.482,369.28,371.986,363.785,365.207,363.785z"/>
</g>
</g>
<g>
<path fill="#263238" d="M301.444,183.156c0,0,12.531,16.36,4.428,48.935c-8.101,32.576-49.94,14.894-52.478-14.465
c-2.991-34.61,35.901-10.747,42.798-41.526L301.444,183.156z"/>
<g>
<path fill="#407BFF" d="M292.349,173.442c-5.434,3.842-7.59,9.409-1.571,14.861c6.02,5.453,14.591,5.28,17.177,3.038
c2.587-2.242,2.089-13.615,2.089-13.615L292.349,173.442z"/>
<path opacity="0.8" fill="#FFFFFF" d="M292.349,173.442c-5.434,3.842-7.59,9.409-1.571,14.861
c6.02,5.453,14.591,5.28,17.177,3.038c2.587-2.242,2.089-13.615,2.089-13.615L292.349,173.442z"/>
</g>
<path fill="#E58A7B" d="M361.035,245.952c0.147,0.66,0.409,1.696,0.635,2.563l0.72,2.77c0.497,1.855,1.044,3.719,1.611,5.581
c1.103,3.736,2.309,7.469,3.569,11.195c1.279,3.719,2.566,7.45,3.981,11.143c0.698,1.85,1.383,3.706,2.118,5.547l0.859,2.207
c0.129,0.305,0.345,0.665,0.669,1.057c1.294,1.636,4.236,3.432,7.47,4.717c3.252,1.375,6.897,2.395,10.616,3.297
c3.735,0.873,7.583,1.596,11.476,2.189c3.868,0.656,7.881,1.093,11.719,1.513l0.139,7.923
c-8.454,0.827-16.736,0.923-25.297-0.005c-4.274-0.453-8.575-1.227-12.991-2.518c-2.201-0.673-4.43-1.508-6.687-2.634
c-2.244-1.153-4.567-2.563-6.725-4.729c-1.071-1.081-2.096-2.349-2.951-3.815c-0.219-0.357-0.409-0.753-0.607-1.131l-0.388-0.79
l-0.68-1.404c-0.915-1.866-1.823-3.739-2.669-5.642c-1.71-3.798-3.37-7.628-4.863-11.536c-1.528-3.894-2.917-7.852-4.183-11.878
c-0.61-2.021-1.201-4.052-1.748-6.118l-0.799-3.124c-0.244-1.107-0.458-2.042-0.706-3.374L361.035,245.952z"/>
<g>
<path fill="#407BFF" d="M356.028,229.261c6.318,1.609,10.739,27.612,10.739,27.612l-17.413,11.842
c0,0-16.695-26.233-11.834-33.18C342.581,228.3,346.808,226.913,356.028,229.261z"/>
<path opacity="0.5" fill="#FFFFFF" d="M356.028,229.261c6.318,1.609,10.739,27.612,10.739,27.612l-17.413,11.842
c0,0-16.695-26.233-11.834-33.18C342.581,228.3,346.808,226.913,356.028,229.261z"/>
</g>
<path opacity="0.2" fill="#407BFF" d="M353.76,235.753l-15.138,11.999c3.582,9.713,10.73,20.959,10.73,20.959l12.072-8.21
L353.76,235.753z"/>
<g>
<path fill="#407BFF" d="M356.028,229.261c0,0,7.304,2.572-7.326,92.534c-24.71,0-50.246,0-62.268,0
c1.045-25.344,1.074-40.971-11.038-92.978c0,0,13.047-2.839,26.441-3.484c10.478-0.504,19.063-0.839,28.275,0.001
C342.256,226.442,356.028,229.261,356.028,229.261z"/>
<path opacity="0.5" fill="#FFFFFF" d="M356.028,229.261c0,0,7.304,2.572-7.326,92.534c-24.71,0-50.246,0-62.268,0
c1.045-25.344,1.074-40.971-11.038-92.978c0,0,13.047-2.839,26.441-3.484c10.478-0.504,19.063-0.839,28.275,0.001
C342.256,226.442,356.028,229.261,356.028,229.261z"/>
</g>
<path fill="#E58A7B" d="M414.219,299.626l10.874-11.022l1.43,15.524c0,0-8.152,5.518-13.794,2.553L414.219,299.626z"/>
<polygon fill="#E58A7B" points="437.877,286.957 438.372,300.019 426.522,304.128 425.093,288.604 "/>
<polygon fill="#E58A7B" points="419.289,508.229 434.62,508.229 436.979,472.727 421.647,472.727 "/>
<polygon fill="#E58A7B" points="359.964,508.229 375.296,508.229 380.227,472.727 364.893,472.727 "/>
<path fill="#263238" d="M376.247,506.456h-17.225c-0.627,0-1.135,0.434-1.224,1.047l-1.963,13.627
c-0.203,1.413,1.013,2.752,2.458,2.726c6.006-0.104,8.899-0.455,16.474-0.455c4.66,0,16.611,0.484,23.046,0.484
c6.295,0,6.777-6.362,4.1-6.938c-12.017-2.586-19.057-6.149-23.104-9.55C378.079,506.783,377.164,506.456,376.247,506.456z"/>
<path fill="#263238" d="M435.813,506.456h-17.224c-0.627,0-1.136,0.434-1.224,1.047l-1.963,13.627
c-0.205,1.413,1.012,2.752,2.457,2.726c6.005-0.104,8.9-0.455,16.476-0.455c4.66,0,14.298,0.484,20.733,0.484
c6.295,0,6.779-6.362,4.099-6.938c-12.016-2.586-16.744-6.149-20.791-9.55C437.646,506.783,436.729,506.456,435.813,506.456z"/>
<path fill="#263238" d="M343.803,162.47c5.523,0.348,8.321,27.945-7.849,26.389C319.78,187.302,343.803,162.47,343.803,162.47z"
/>
<g>
<polygon fill="#CF6F64" points="436.977,472.735 435.762,491.036 420.425,491.036 421.637,472.735 "/>
<polygon fill="#CF6F64" points="364.888,472.735 380.228,472.735 377.678,491.036 362.341,491.036 "/>
</g>
<path opacity="0.2" fill="#407BFF" d="M281.623,257.672c1.444,7.547,2.519,14.062,3.317,19.929l3.639-28.168L281.623,257.672z"
/>
<path fill="#E58A7B" d="M304.639,193.496c1.783,9.097,3.563,25.766-2.801,31.836c0,0,2.486,9.229,19.391,9.229
c18.589,0,8.885-9.228,8.885-9.228c-10.146-2.422-9.883-9.949-8.117-17.018L304.639,193.496z"/>
<g>
<polygon fill="#263238" points="317.871,236.538 323.534,234.508 322.774,232.955 "/>
<polygon fill="#263238" points="328.849,235.353 323.534,234.508 324.68,232.771 "/>
<path fill="#407BFF" d="M303.895,221.038l-3.84,3.673c-0.248,0.237-0.265,0.627-0.04,0.886l16.158,18.476
c0,0,0.639-6.163,6.602-11.117c-13.41-5.076-16.911-10.334-18.097-11.867C304.486,220.841,304.121,220.821,303.895,221.038z"/>
<path fill="#407BFF" d="M327.071,223.869l4.772,1.304c0.292,0.08,0.518,0.302,0.593,0.596
c0.478,1.849,1.959,8.985-0.733,18.303c-0.691-2.511-2.964-8.517-7.022-11.302c4.395-3.04,2.631-6.98,2.007-8.467
C326.583,224.054,326.809,223.797,327.071,223.869z"/>
</g>
<path fill="#CF6F64" d="M311.715,199.542l10.273,8.766c-0.424,1.672-0.754,3.369-0.872,5.019c-3.875-0.561-9.2-4.815-9.61-8.873
C311.3,202.43,311.385,200.485,311.715,199.542z"/>
<path fill="#E58A7B" d="M303.569,169.526c-1.756,15.114-2.823,21.474,3.355,30.498c9.293,13.574,28.24,12.426,34.479-1.859
c5.614-12.858,7.542-35.414-6.027-43.982C322.009,145.742,305.325,154.412,303.569,169.526z"/>
<path fill="#263238" d="M338.197,144.577c-24.991-9.868-43.757,1.259-47.633,17.072c-6.018,24.562,13.366,26.288,13.366,26.288
l2.419-6.273c3.499,2.096,13.345,1.168,10.275-17.061c-1.739-10.323,11.327,4.049,27.895,2.453
C348.972,166.625,354.995,151.21,338.197,144.577z"/>
<path fill="#263238" d="M346.704,150.651c-3.297-5.065-10.019-9.391-23.941-11.438c0,0,7.23,1.627,9.584,6.92
C334.699,151.426,350.664,156.736,346.704,150.651z"/>
<path fill="#E58A7B" d="M298.833,182.6c-0.247,3.145,0.982,6.11,2.696,8.054c2.581,2.924,5.984,1.127,7.036-2.414
c0.949-3.188,0.747-8.55-2.693-10.172C302.48,176.47,299.117,179.004,298.833,182.6z"/>
<path fill="#263238" d="M348.702,321.795c0,0,102.796,9.555,101.79,56.31c-1.045,48.632-11.453,109.388-11.453,109.388H417.81
c0,0-1.817-51.414-2.429-99.293c-0.32-24.946-99.656-29.938-99.656-29.938l-12.824-36.466H348.702z"/>
<path fill="#263238" d="M332.257,321.795c0,0,66.437,22.036,68.112,49.298c3.084,50.21-18.989,116.399-18.989,116.399h-20.906
c0,0,1.184-43.918,3.685-89.407c3.141-57.154-97.703-0.788-77.725-76.29H332.257z"/>
<ellipse transform="matrix(-0.9843 -0.1763 0.1763 -0.9843 617.3752 410.8847)" fill="#263238" cx="326.939" cy="178.019" rx="1.464" ry="2.239"/>
<ellipse transform="matrix(-0.9843 -0.1764 0.1764 -0.9843 644.223 418.2213)" fill="#263238" cx="340.698" cy="180.48" rx="1.463" ry="2.239"/>
<path fill="#263238" d="M340.729,178.281l3.075-0.32C343.803,177.961,341.895,179.977,340.729,178.281z"/>
<path fill="#DF5753" d="M335.246,181.664c0,0,1.128,5.61,2.951,8.545c-1.876,1.212-4.485,0.038-4.485,0.038L335.246,181.664z"/>
<path fill="#263238" d="M328.633,194.149c-0.013,0-0.026-0.001-0.04-0.004c-5.659-1.012-7.612-5.485-7.632-5.53
c-0.049-0.118,0.005-0.253,0.124-0.303c0.118-0.048,0.253,0.005,0.302,0.122c0.019,0.043,1.884,4.288,7.287,5.255
c0.126,0.023,0.21,0.143,0.187,0.269C328.84,194.07,328.742,194.149,328.633,194.149z"/>
<path fill="#263238" d="M322.273,172.33c-0.124,0-0.249-0.05-0.339-0.148c-0.175-0.188-0.163-0.481,0.025-0.655
c2.847-2.629,5.971-1.881,6.104-1.847c0.248,0.063,0.397,0.313,0.337,0.56c-0.061,0.249-0.314,0.402-0.562,0.338
c-0.114-0.027-2.785-0.65-5.251,1.63C322.498,172.29,322.386,172.33,322.273,172.33z"/>
<path fill="#263238" d="M346.767,174.749c-0.179,0-0.35-0.104-0.426-0.278c-1.348-3.1-4.122-3.601-4.148-3.605
c-0.254-0.043-0.423-0.282-0.38-0.534c0.041-0.252,0.285-0.422,0.533-0.38c0.135,0.023,3.299,0.595,4.845,4.15
c0.104,0.234-0.004,0.507-0.239,0.609C346.891,174.736,346.828,174.749,346.767,174.749z"/>
<path fill="#E58A7B" d="M284.698,250.997c-1.336,4.375-2.782,8.904-4.057,13.384c-1.341,4.48-2.649,8.964-3.809,13.448
c-1.14,4.484-2.268,8.952-3.097,13.334c-0.4,2.183-0.767,4.345-0.98,6.375c-0.114,1.022-0.166,1.981-0.19,2.872
c-0.006,0.194-0.033-0.058-0.147-0.345c-0.124-0.275-0.392-0.772-0.726-1.07c-0.751-0.661-1.038-0.538-0.694-0.436
c0.313,0.116,1.06,0.193,1.876,0.188c1.673-0.005,3.752-0.321,5.825-0.753c4.206-0.854,8.592-2.226,12.958-3.691
c8.717-3.02,17.55-6.549,26.167-10.22l3.802,6.952c-8.209,5.321-16.582,10.104-25.548,14.259
c-4.489,2.074-9.09,3.973-14.128,5.498c-2.551,0.721-5.165,1.383-8.256,1.669c-1.562,0.126-3.22,0.196-5.255-0.13
c-1.029-0.186-2.113-0.423-3.344-0.969c-1.207-0.536-2.525-1.313-3.687-2.522c-2.424-2.363-3.269-5.931-3.286-7.964
c-0.075-1.493-0.081-2.922-0.028-4.279c0.102-2.729,0.353-5.303,0.701-7.83c0.7-5.037,1.618-9.896,2.741-14.678
c1.105-4.785,2.305-9.509,3.616-14.192c1.384-4.683,2.727-9.278,4.373-13.966L284.698,250.997z"/>
<path fill="#407BFF" d="M381.501,509.029c-1.406,0-2.95-0.294-4.03-0.55c-0.1-0.023-0.176-0.104-0.194-0.204
c-0.018-0.101,0.025-0.204,0.112-0.26c0.521-0.343,5.118-3.316,6.863-2.536c0.367,0.167,0.597,0.493,0.661,0.939
c0.108,0.776-0.083,1.393-0.569,1.836C383.713,508.831,382.652,509.029,381.501,509.029z M378.19,508.113
c2.831,0.6,4.979,0.519,5.808-0.238c0.358-0.325,0.49-0.777,0.404-1.385c-0.038-0.273-0.152-0.446-0.362-0.541
C382.921,505.445,379.808,507.118,378.19,508.113z"/>
<path fill="#407BFF" d="M377.529,508.485c-0.044,0-0.089-0.012-0.129-0.034c-0.079-0.046-0.127-0.13-0.127-0.223
c0-0.184,0.019-4.551,1.651-5.997c0.417-0.37,0.893-0.526,1.453-0.457c0.801,0.098,1.057,0.559,1.13,0.927
c0.318,1.59-2.24,4.84-3.852,5.752C377.617,508.477,377.572,508.485,377.529,508.485z M380.137,502.272
c-0.323,0-0.61,0.112-0.872,0.346c-1.164,1.03-1.411,3.958-1.464,5.124c1.43-1.07,3.442-3.748,3.203-4.94
c-0.037-0.19-0.15-0.451-0.689-0.518C380.254,502.275,380.194,502.272,380.137,502.272z"/>
<path fill="#407BFF" d="M441.58,509.032c-1.681,0-3.516-0.291-4.814-0.55c-0.106-0.023-0.189-0.109-0.205-0.217
c-0.015-0.109,0.038-0.213,0.137-0.264c0.686-0.357,6.747-3.452,8.578-2.453c0.332,0.182,0.527,0.486,0.563,0.884
c0.061,0.688-0.148,1.253-0.623,1.679C444.449,508.802,443.076,509.032,441.58,509.032z M437.611,508.116
c1.982,0.343,5.909,0.829,7.262-0.385c0.353-0.316,0.499-0.726,0.453-1.253c-0.021-0.227-0.115-0.38-0.296-0.479
C443.828,505.341,439.751,507.072,437.611,508.116z"/>
<path fill="#407BFF" d="M436.815,508.485c-0.052,0-0.104-0.015-0.148-0.046c-0.074-0.052-0.114-0.139-0.108-0.23
c0.014-0.173,0.363-4.255,2.258-5.832c0.566-0.473,1.212-0.677,1.932-0.603c0.938,0.095,1.208,0.561,1.269,0.936
c0.277,1.693-3.293,4.94-5.097,5.755C436.886,508.479,436.852,508.485,436.815,508.485z M440.465,502.272
c-0.486,0-0.919,0.164-1.321,0.498c-1.375,1.146-1.871,3.909-2.019,5.015c1.938-1.088,4.572-3.857,4.385-4.991
c-0.016-0.109-0.07-0.436-0.814-0.51C440.617,502.275,440.541,502.272,440.465,502.272z"/>
<path fill="#E58A7B" d="M317.539,284.256l14.543-3.685l-6.929,13.967c0,0-9.835,0.42-13.083-5.064L317.539,284.256z"/>
<polygon fill="#E58A7B" points="343.831,285.878 337.396,297.257 325.153,294.538 332.082,280.571 "/>
<path fill="#263238" d="M326.969,175.819l3.075-0.319C330.043,175.5,328.135,177.515,326.969,175.819z"/>
<path fill="#407BFF" d="M285.501,318.14l-0.495,5.574c-0.219,0.433,0.293,0.873,1.013,0.873h62.989
c0.562,0,1.026-0.274,1.062-0.627l0.562-5.574c0.04-0.387-0.447-0.714-1.061-0.714h-63.056
C286.051,317.672,285.642,317.862,285.501,318.14z"/>
<g>
<path fill="#263238" d="M293.971,325.19h-1.69c-0.336,0-0.593-0.173-0.57-0.384l0.793-7.243
c0.023-0.211,0.318-0.385,0.653-0.385h1.689c0.336,0,0.593,0.174,0.57,0.385l-0.792,7.243
C294.602,325.018,294.306,325.19,293.971,325.19z"/>
<path fill="#263238" d="M344.263,325.19h-1.688c-0.336,0-0.592-0.173-0.569-0.384l0.792-7.243
c0.023-0.211,0.317-0.385,0.654-0.385h1.688c0.335,0,0.591,0.174,0.568,0.385l-0.792,7.243
C344.893,325.018,344.599,325.19,344.263,325.19z"/>
<path fill="#263238" d="M319.115,325.19h-1.687c-0.337,0-0.593-0.173-0.57-0.384l0.792-7.243
c0.023-0.211,0.316-0.385,0.654-0.385h1.689c0.335,0,0.592,0.174,0.568,0.385l-0.792,7.243
C319.746,325.018,319.452,325.19,319.115,325.19z"/>
</g>
<g>
<path fill="#407BFF" d="M275.396,228.817c-6.239,1.896-13.731,23.377-13.731,23.377l20.114,19.637
c0,0,12.914-20.265,10.294-28.329C289.342,235.106,282.516,226.652,275.396,228.817z"/>
<path opacity="0.5" fill="#FFFFFF" d="M275.396,228.817c-6.239,1.896-13.731,23.377-13.731,23.377l20.114,19.637
c0,0,12.914-20.265,10.294-28.329C289.342,235.106,282.516,226.652,275.396,228.817z"/>
</g>
</g>
</g>
<g>
<g>
<rect x="492.458" y="306.48" fill="#407BFF" width="117.271" height="228.107"/>
<rect x="492.458" y="306.48" opacity="0.6" fill="#FFFFFF" width="117.271" height="228.107"/>
</g>
<g>
<rect x="265.283" y="306.48" fill="#407BFF" width="117.273" height="228.107"/>
<rect x="265.283" y="306.48" opacity="0.6" fill="#FFFFFF" width="117.273" height="228.107"/>
</g>
<g>
<rect x="604.454" y="306.48" fill="#407BFF" width="9.67" height="228.107"/>
<rect x="604.454" y="306.48" opacity="0.3" width="9.67" height="228.107"/>
</g>
<g>
<rect x="383.952" y="306.48" fill="#407BFF" width="233.165" height="17.109"/>
<rect x="383.952" y="306.48" opacity="0.3" width="233.165" height="17.109"/>
</g>
<g>
<rect x="377.278" y="306.48" fill="#407BFF" width="9.669" height="228.107"/>
<rect x="377.278" y="306.48" opacity="0.3" width="9.669" height="228.107"/>
</g>
<g>
<rect x="383.387" y="311.759" fill="#407BFF" width="225.9" height="49.283"/>
<rect x="383.387" y="311.759" opacity="0.3" width="225.9" height="49.283"/>
</g>
<g>
<path fill="#407BFF" d="M609.793,541.207H544.68c-9.188,0-16.664-7.478-16.664-16.669v-205.35
c0-8.137-6.618-14.755-14.754-14.755h-19.471v-1.475h19.471c8.948,0,16.228,7.281,16.228,16.229v205.35
c0,8.378,6.815,15.195,15.19,15.195h65.113c2.801,0,4.417-1.866,4.992-3.608c0.575-1.744,0.392-4.202-1.857-5.875l0.878-1.184
c2.373,1.763,3.306,4.716,2.379,7.521C615.258,539.394,612.746,541.207,609.793,541.207z"/>
<path opacity="0.3" d="M609.793,541.207H544.68c-9.188,0-16.664-7.478-16.664-16.669v-205.35
c0-8.137-6.618-14.755-14.754-14.755h-19.471v-1.475h19.471c8.948,0,16.228,7.281,16.228,16.229v205.35
c0,8.378,6.815,15.195,15.19,15.195h65.113c2.801,0,4.417-1.866,4.992-3.608c0.575-1.744,0.392-4.202-1.857-5.875l0.878-1.184
c2.373,1.763,3.306,4.716,2.379,7.521C615.258,539.394,612.746,541.207,609.793,541.207z"/>
</g>
<g>
<g>
<rect x="617.809" y="373.784" fill="#407BFF" width="1.474" height="28.498"/>
<rect x="617.809" y="373.784" opacity="0.3" width="1.474" height="28.498"/>
</g>
<g>
<rect x="617.809" y="356.956" fill="#407BFF" width="1.474" height="7.492"/>
<rect x="617.809" y="356.956" opacity="0.3" width="1.474" height="7.492"/>
</g>
</g>
</g>
<g>
<g>
<polygon fill="#407BFF" points="511.323,238.381 402.05,238.381 386.212,302.909 495.487,302.909 "/>
<polygon opacity="0.4" fill="#FFFFFF" points="511.323,238.381 402.05,238.381 386.212,302.909 495.487,302.909 "/>
</g>
<g>
<polygon fill="#407BFF" points="389.569,302.909 389.127,306.477 346.237,306.477 346.68,302.909 "/>
<polygon opacity="0.4" fill="#FFFFFF" points="389.569,302.909 389.127,306.477 346.237,306.477 346.68,302.909 "/>
</g>
<g>
<polygon fill="#407BFF" points="498.849,302.909 498.408,306.477 389.127,306.477 389.569,302.909 "/>
<polygon opacity="0.5" points="498.849,302.909 498.408,306.477 389.127,306.477 389.569,302.909 "/>
</g>
<g>
<polygon fill="#407BFF" points="514.688,238.381 405.411,238.381 389.575,302.909 498.849,302.909 "/>
<polygon opacity="0.5" points="514.688,238.381 405.411,238.381 389.575,302.909 498.849,302.909 "/>
</g>
</g>
<g>
<path fill="#407BFF" d="M556.896,290.219c0,0-16.081-27.722,6.229-49.789c0,0,5.824,3.795,5.733,8.897
c-0.089,5.103-6.234,6.393-4.913,10.651c1.318,4.258,7.122,8.436,3.313,11.956c-3.808,3.519,0.613,6.653,0.358,10.966
C567.355,287.212,556.896,290.219,556.896,290.219z"/>
<g>
<path fill="#407BFF" d="M558.113,292.752c0,0,6.522-31.377-21.609-45.284c0,0-4.33,5.438-2.636,10.251
c1.694,4.814,7.933,4.102,8.023,8.559c0.089,4.457-4.101,10.251,0.625,12.391c4.725,2.139,1.515,6.506,3.116,10.518
C547.241,293.198,558.113,292.752,558.113,292.752z"/>
<path opacity="0.5" d="M558.113,292.752c0,0,6.522-31.377-21.609-45.284c0,0-4.33,5.438-2.636,10.251
c1.694,4.814,7.933,4.102,8.023,8.559c0.089,4.457-4.101,10.251,0.625,12.391c4.725,2.139,1.515,6.506,3.116,10.518
C547.241,293.198,558.113,292.752,558.113,292.752z"/>
</g>
<g>
<path fill="#407BFF" d="M533.477,285.799c0,0,0.532,20.682,21.036,20.682c20.503,0,21.039-20.682,21.039-20.682H533.477z"/>
<path opacity="0.5" d="M533.477,285.799c0,0,0.532,20.682,21.036,20.682c20.503,0,21.039-20.682,21.039-20.682H533.477z"/>
</g>
</g>
<g>
<polygon fill="#407BFF" points="423.258,150.584 405.745,127.963 388.232,150.583 396.473,150.583 396.473,179.876
415.017,179.876 415.017,150.584 "/>
<g>
<path fill="#407BFF" d="M474.638,177.193c0-10.94,4.36-21.449,12.091-29.18c7.731-7.73,18.238-12.092,29.181-12.092v10.768
c-16.843,0-30.506,13.661-30.506,30.504H474.638z"/>
<g>
<path fill="#407BFF" d="M474.638,177.193h10.766c0,16.857,13.663,30.504,30.506,30.504c5.555,0,10.766-1.482,15.245-4.087
l5.384,9.328c-19.607,11.314-45.043,4.491-56.374-15.116C476.552,191.561,474.638,184.434,474.638,177.193z"/>
<path opacity="0.5" fill="#FFFFFF" d="M474.638,177.193h10.766c0,16.857,13.663,30.504,30.506,30.504
c5.555,0,10.766-1.482,15.245-4.087l5.384,9.328c-19.607,11.314-45.043,4.491-56.374-15.116
C476.552,191.561,474.638,184.434,474.638,177.193z"/>
</g>
<g>
<path fill="#407BFF" d="M515.909,146.689v-10.768c22.788,0,41.271,18.484,41.271,41.272c0,15.274-8.305,28.619-20.643,35.745
l-5.384-9.328c9.125-5.255,15.261-15.116,15.261-26.417C546.415,160.35,532.752,146.689,515.909,146.689z"/>
<path opacity="0.7" d="M515.909,146.689v-10.768c22.788,0,41.271,18.484,41.271,41.272c0,15.274-8.305,28.619-20.643,35.745
l-5.384-9.328c9.125-5.255,15.261-15.116,15.261-26.417C546.415,160.35,532.752,146.689,515.909,146.689z"/>
</g>
</g>
<g>
<path fill="#263238" d="M477.146,75.948h-37.604c-2.791,0-5.051,2.261-5.051,5.051v69.498c0,2.791,2.26,5.051,5.051,5.051
h48.127c2.792,0,5.052-2.261,5.052-5.051V91.522L477.146,75.948z"/>
<g>
<path fill="#407BFF" d="M474.941,148.593h-31.288c-1.215,0-2.206-0.993-2.206-2.206l0,0c0-1.212,0.991-2.206,2.206-2.206
h31.288c1.212,0,2.205,0.994,2.205,2.206l0,0C477.146,147.601,476.153,148.593,474.941,148.593z"/>
</g>
<g>
<path fill="#407BFF" d="M460.201,87.314h-16.548c-1.215,0-2.206-0.992-2.206-2.206l0,0c0-1.212,0.991-2.206,2.206-2.206h16.548
c1.212,0,2.205,0.993,2.205,2.206l0,0C462.406,86.322,461.413,87.314,460.201,87.314z"/>
</g>
<g>
<path fill="#407BFF" d="M470.997,96.068h-27.344c-1.215,0-2.206-0.993-2.206-2.206l0,0c0-1.212,0.991-2.205,2.206-2.205h27.344
c1.212,0,2.205,0.993,2.205,2.205l0,0C473.202,95.076,472.209,96.068,470.997,96.068z"/>
</g>
<g>
<path fill="#407BFF" d="M483.56,104.822h-39.906c-1.215,0-2.206-0.993-2.206-2.206l0,0c0-1.213,0.991-2.206,2.206-2.206h39.906
c1.215,0,2.206,0.993,2.206,2.206l0,0C485.766,103.83,484.774,104.822,483.56,104.822z"/>
</g>
<g>
<path fill="#407BFF" d="M483.56,113.577h-23.2c-1.212,0-2.205-0.993-2.205-2.206l0,0c0-1.213,0.993-2.206,2.205-2.206h23.2
c1.215,0,2.206,0.993,2.206,2.206l0,0C485.766,112.584,484.774,113.577,483.56,113.577z"/>
</g>
<g>
<path fill="#407BFF" d="M449.721,113.577h-6.067c-1.215,0-2.206-0.993-2.206-2.206l0,0c0-1.213,0.991-2.206,2.206-2.206h6.067
c1.214,0,2.205,0.993,2.205,2.206l0,0C451.926,112.584,450.935,113.577,449.721,113.577z"/>
</g>
<g>
<path fill="#407BFF" d="M483.56,122.331h-39.906c-1.215,0-2.206-0.993-2.206-2.206l0,0c0-1.213,0.991-2.206,2.206-2.206h39.906
c1.215,0,2.206,0.993,2.206,2.206l0,0C485.766,121.338,484.774,122.331,483.56,122.331z"/>
</g>
<g>
<path fill="#407BFF" d="M468.16,131.085h-24.507c-1.215,0-2.206-0.992-2.206-2.206l0,0c0-1.214,0.991-2.206,2.206-2.206h24.507
c1.214,0,2.207,0.992,2.207,2.206l0,0C470.367,130.093,469.374,131.085,468.16,131.085z"/>
</g>
<g>
<path fill="#407BFF" d="M483.56,131.085h-6.54c-1.214,0-2.205-0.992-2.205-2.206l0,0c0-1.214,0.991-2.206,2.205-2.206h6.54
c1.215,0,2.206,0.992,2.206,2.206l0,0C485.766,130.093,484.774,131.085,483.56,131.085z"/>
</g>
<g>
<path fill="#407BFF" d="M483.56,139.839h-39.906c-1.215,0-2.206-0.993-2.206-2.206l0,0c0-1.213,0.991-2.206,2.206-2.206h39.906
c1.215,0,2.206,0.993,2.206,2.206l0,0C485.766,138.846,484.774,139.839,483.56,139.839z"/>
</g>
<g>
<g opacity="0.5">
<path fill="#FFFFFF" d="M474.941,148.593h-31.288c-1.215,0-2.206-0.993-2.206-2.206l0,0c0-1.212,0.991-2.206,2.206-2.206
h31.288c1.212,0,2.205,0.994,2.205,2.206l0,0C477.146,147.601,476.153,148.593,474.941,148.593z"/>
</g>
<g opacity="0.5">
<path fill="#FFFFFF" d="M460.201,87.314h-16.548c-1.215,0-2.206-0.992-2.206-2.206l0,0c0-1.212,0.991-2.206,2.206-2.206
h16.548c1.212,0,2.205,0.993,2.205,2.206l0,0C462.406,86.322,461.413,87.314,460.201,87.314z"/>
</g>
<g opacity="0.5">
<path fill="#FFFFFF" d="M470.997,96.068h-27.344c-1.215,0-2.206-0.993-2.206-2.206l0,0c0-1.212,0.991-2.205,2.206-2.205
h27.344c1.212,0,2.205,0.993,2.205,2.205l0,0C473.202,95.076,472.209,96.068,470.997,96.068z"/>
</g>
<g opacity="0.5">
<path fill="#FFFFFF" d="M483.56,104.822h-39.906c-1.215,0-2.206-0.993-2.206-2.206l0,0c0-1.213,0.991-2.206,2.206-2.206
h39.906c1.215,0,2.206,0.993,2.206,2.206l0,0C485.766,103.83,484.774,104.822,483.56,104.822z"/>
</g>
<g opacity="0.5">
<path fill="#FFFFFF" d="M483.56,113.577h-23.2c-1.212,0-2.205-0.993-2.205-2.206l0,0c0-1.213,0.993-2.206,2.205-2.206h23.2
c1.215,0,2.206,0.993,2.206,2.206l0,0C485.766,112.584,484.774,113.577,483.56,113.577z"/>
</g>
<g opacity="0.5">
<path fill="#FFFFFF" d="M449.721,113.577h-6.067c-1.215,0-2.206-0.993-2.206-2.206l0,0c0-1.213,0.991-2.206,2.206-2.206h6.067
c1.214,0,2.205,0.993,2.205,2.206l0,0C451.926,112.584,450.935,113.577,449.721,113.577z"/>
</g>
<g opacity="0.5">
<path fill="#FFFFFF" d="M483.56,122.331h-39.906c-1.215,0-2.206-0.993-2.206-2.206l0,0c0-1.213,0.991-2.206,2.206-2.206
h39.906c1.215,0,2.206,0.993,2.206,2.206l0,0C485.766,121.338,484.774,122.331,483.56,122.331z"/>
</g>
<g opacity="0.5">
<path fill="#FFFFFF" d="M468.16,131.085h-24.507c-1.215,0-2.206-0.992-2.206-2.206l0,0c0-1.214,0.991-2.206,2.206-2.206
h24.507c1.214,0,2.207,0.992,2.207,2.206l0,0C470.367,130.093,469.374,131.085,468.16,131.085z"/>
</g>
<g opacity="0.5">
<path fill="#FFFFFF" d="M483.56,131.085h-6.54c-1.214,0-2.205-0.992-2.205-2.206l0,0c0-1.214,0.991-2.206,2.205-2.206h6.54
c1.215,0,2.206,0.992,2.206,2.206l0,0C485.766,130.093,484.774,131.085,483.56,131.085z"/>
</g>
<g opacity="0.5">
<path fill="#FFFFFF" d="M483.56,139.839h-39.906c-1.215,0-2.206-0.993-2.206-2.206l0,0c0-1.213,0.991-2.206,2.206-2.206
h39.906c1.215,0,2.206,0.993,2.206,2.206l0,0C485.766,138.846,484.774,139.839,483.56,139.839z"/>
</g>
</g>
<g>
<path fill="#407BFF" d="M477.146,75.948v10.523c0,2.791,2.264,5.051,5.052,5.051h10.522L477.146,75.948z"/>
<path opacity="0.5" fill="#FFFFFF" d="M477.146,75.948v10.523c0,2.791,2.264,5.051,5.052,5.051h10.522L477.146,75.948z"/>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 72 KiB

View File

@@ -0,0 +1,966 @@
<svg version="1.1" id="Layer_1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="1394.93px" height="653.968px" viewBox="0 0 1394.93 653.968" enable-background="new 0 0 1394.93 653.968"
xml:space="preserve">
<g>
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="102.7437" y1="532.6035" x2="1163.6865" y2="532.6035">
<stop offset="1.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#C4D8FB"/>
</linearGradient>
<path fill="url(#SVGID_1_)" d="M656.885,484.053c-227.545,0-412.01,21.736-412.01,48.55c0,26.81,184.465,48.552,412.01,48.552
c227.54,0,412.004-21.742,412.004-48.552C1068.89,505.789,884.425,484.053,656.885,484.053z"/>
</g>
<g>
<path fill="#333242" d="M687.997,15.528h-31.7v507.605h31.7c62.009,0,112.267-113.63,112.267-253.799
C800.264,129.164,750.006,15.528,687.997,15.528z"/>
<path fill="#42445D" d="M656.297,358.715h136.802c3.052-18.356,5.201-37.718,6.303-57.812H656.297V358.715z"/>
<path fill="#42445D" d="M656.297,523.133h31.7c42.116,0,78.805-52.42,98.018-129.975H656.297V523.133z"/>
<path fill="#FFFFFF" d="M653.171,15.528c-62.008,0-112.267,113.636-112.267,253.806c0,140.169,50.258,253.799,112.267,253.799
c62.003,0,112.273-113.63,112.273-253.799C765.444,129.164,715.175,15.528,653.171,15.528z"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="554.5884" y1="269.3345" x2="733.8267" y2="269.3345">
<stop offset="0" style="stop-color:#FDB522"/>
<stop offset="1" style="stop-color:#FB6B14"/>
</linearGradient>
<path fill="url(#SVGID_2_)" d="M644.208,66.733c-49.49,0-89.619,90.708-89.619,202.601c0,111.892,40.129,202.602,89.619,202.602
c49.492,0,89.619-90.71,89.619-202.602C733.827,157.442,693.7,66.733,644.208,66.733z"/>
<ellipse fill="#FFFFFF" cx="634.309" cy="269.334" rx="63.792" ry="144.217"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="586.2168" y1="269.3311" x2="670.4678" y2="269.3311">
<stop offset="0" style="stop-color:#FDB522"/>
<stop offset="1" style="stop-color:#FB6B14"/>
</linearGradient>
<path fill="url(#SVGID_3_)" d="M628.34,174.107c-23.26,0-42.123,42.635-42.123,95.227c0,52.586,18.863,95.221,42.123,95.221
c23.267,0,42.128-42.635,42.128-95.221C670.468,216.742,651.606,174.107,628.34,174.107z"/>
<path fill="#FFFFFF" d="M622.537,226.687c-10.423,0-18.869,19.095-18.869,42.647c0,23.553,8.446,42.646,18.869,42.646
c10.416,0,18.861-19.094,18.861-42.646C641.398,245.782,632.953,226.687,622.537,226.687z"/>
</g>
<g>
<g>
<g>
<g>
<g>
<g>
<path fill="#333242" d="M950.527,469.999l-46.699-0.184c-4.964,0-9.594,4.137-10.321,9.231l-16.785,131.998h10.114
l16.207-131.975c0.428-2.994-0.94-6.006,1.976-6.006l44.492,1.095c2.917,0,5.743,2.536,6.172,5.53l16.666,131.355h6.16
L962.82,479.047C962.087,473.952,955.479,469.999,950.527,469.999z"/>
</g>
</g>
<g>
<g>
<path fill="#42445D" d="M946.654,469.815h-45.689c-4.958,0-9.57,4.148-10.267,9.255l-16.803,131.975h4.238l16.713-131.361
c0.412-2.994,3.214-5.524,6.118-5.524h45.689c2.91,0,5.714,2.53,6.124,5.524l16.713,131.361h4.232L956.927,479.07
C956.225,473.964,951.623,469.815,946.654,469.815z"/>
</g>
</g>
</g>
</g>
<g>
<g>
<g>
<g>
<path fill="#333242" d="M856.985,469.511h-55.799c-4.958,0-9.589,4.291-10.314,9.56l-22.44,131.975h7.826L800.4,479.089
c0.429-3.095,4.428-5.071,7.338-5.071h48.053c2.909,0,5.736,2.619,6.166,5.714l16.659,131.313h6.166L869.099,479.07
C868.366,473.802,861.945,469.511,856.985,469.511z"/>
</g>
</g>
<g>
<g>
<path fill="#42445D" d="M852.005,469.511h-54.609c-4.916,0-9.673,4.222-10.608,9.405l-22.153,132.129h4.312L790.9,479.772
c0.566-3.119,3.543-5.755,6.495-5.755h54.609c2.91,0,5.731,2.619,6.155,5.714l16.67,131.313h4.238l-16.767-131.968
C861.581,473.802,856.957,469.511,852.005,469.511z"/>
</g>
</g>
</g>
</g>
<g>
<g>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="788.3457" y1="421.0078" x2="788.3457" y2="460.5998">
<stop offset="2.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#8AA8DA"/>
</linearGradient>
<path fill="url(#SVGID_4_)" d="M797.563,466.81c-1.406,0.031-2.598,0.048-3.376,0.054c-0.101-0.042-2.595-1.155-5.672-17.022
c-1.834-9.464-3.179-20.345-4.065-27.546c-0.357-2.898-0.636-5.185-0.846-6.446l-0.346-2.15l-4.129,0.715l0.343,2.15
c0.192,1.184,0.472,3.433,0.817,6.284c4.411,35.701,8.021,48.354,13.825,48.354c0.822,0,2.036-0.017,3.448-0.047V466.81z"/>
</g>
<g>
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="828.3174" y1="418.4063" x2="828.3174" y2="469.9689">
<stop offset="0" style="stop-color:#8AA8DA"/>
<stop offset="1" style="stop-color:#EFF6FF"/>
</linearGradient>
<path fill="url(#SVGID_5_)" d="M792.294,448.828c-1.832-9.386-3.179-20.177-4.064-27.307c-0.357-2.823-0.633-5.048-0.834-6.298
l-4.132,0.721c0.192,1.166,0.466,3.356,0.804,6.13c4.411,35.396,8.03,47.944,13.839,47.944h75.466v-4.353l-75.395,0.006
C797.872,465.639,795.383,464.559,792.294,448.828z"/>
</g>
</g>
<rect x="889.704" y="465.739" fill="#B7CCE7" width="56.818" height="6.595"/>
<g>
<g>
<g>
<path fill="#42445D" d="M876.063,449.941c-2.001-9.958-3.523-21.528-4.436-28.444c-0.333-2.523-1.125-7.799-1.125-7.799
l-4.13,0.715c0,0,0.773,5.186,1.1,7.673c4.899,37.146,8.722,50.307,14.589,50.307h2.096l0.09-4.333h-2.096
C881.878,467.952,879.384,466.542,876.063,449.941z"/>
</g>
</g>
<g>
<path fill="#B7CCE7" d="M879.551,449.245c-1.833-9.471-3.178-20.355-4.064-27.564c-0.357-2.897-0.645-5.189-0.846-6.457
l-4.138,0.721c0.197,1.178,0.471,3.435,0.822,6.292c4.415,35.716,8.027,48.371,13.82,48.371l0.083-4.339
C885.122,466.227,882.628,465.114,879.551,449.245z"/>
</g>
</g>
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="814.3584" y1="343.9985" x2="814.3584" y2="388.2994">
<stop offset="1.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#C4D8FB"/>
</linearGradient>
<path fill="url(#SVGID_6_)" d="M845.785,333.509h-77.947c-7.946,0-13.493,6.088-12.327,13.529l11.01,70.41
c0,0,11.381,5.179,45.522,5.179c34.14,0,61.317-5.179,61.317-5.179l-11.018-70.41
C861.182,339.598,853.724,333.509,845.785,333.509z"/>
<path fill="#0D5BD9" d="M852.934,333.509h-77.954c-7.94,0-13.492,6.088-12.326,13.529l11.018,70.41
c0,0,11.378,5.179,45.521,5.179c34.146,0,61.316-5.179,61.316-5.179l-11.018-70.41
C868.324,339.598,860.874,333.509,852.934,333.509z"/>
<g>
<g>
<path fill="#0D5BD9" d="M883.479,457.411H792.8c-3.976,0-7.201,3.345-7.201,7.477c0,4.124,3.226,7.463,7.201,7.463h90.68
c3.97,0,7.195-3.339,7.195-7.463C890.675,460.756,887.449,457.411,883.479,457.411z"/>
</g>
</g>
<g>
<g>
<path fill="#0A429F" d="M960.479,457.411h-90.686c-3.969,0-7.189,3.345-7.189,7.477c0,4.124,3.221,7.463,7.189,7.463h90.686
c3.976,0,7.195-3.339,7.195-7.463C967.675,460.756,964.455,457.411,960.479,457.411z"/>
</g>
</g>
</g>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M929.75,459.196c-10.751-20.367-83.132-36.658-83.132-36.658
s-11.101,26.165-9.507,31.374c1.828,5.957,63.693,19.158,64.76,24.67c1.487,5.811-0.466,10.755-0.691,15.994
c-1.161,26.729,7.519,44.521,4.911,65.168c-0.847,6.737-3.148,6.506-3.679,9.441c-0.72,3.957,1.215,8.355,1.019,16.021
c-0.251,9.93-3.542,20.481-0.995,25.577c1.638,3.279,11.362,11.517,15.767,10.832c5.103-0.797,3.27-9.714,3.119-13.522
c-0.148-3.728-3.935-30.961-4.088-33.117C916.631,567.029,937.938,474.72,929.75,459.196z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFC3AB" d="M857.557,419.675c0,0-22.039,29.028-20.445,34.237
c1.828,5.957,63.693,19.158,64.76,24.67c1.487,5.811-0.466,10.755-0.691,15.994c-1.161,26.729,7.519,44.521,4.911,65.168
c-0.847,6.737-3.148,6.506-3.679,9.441c-0.72,3.962,1.215,8.355,1.019,16.021c-0.251,9.93-3.542,20.481-0.995,25.577
c1.59,3.172,10.713,10.95,15.304,10.844c-8.293-10.541-10.506-22.23-8.263-35.35c2.437-14.308,1.364-26.246,0.375-40.514
c-1.011-14.584,0.727-28.861,7.334-41.485c6.809-13.019,7.333-24.695,7.333-38.963c0-3.826,1.202-6.881,3.094-9.184
C911.798,437.216,857.557,419.675,857.557,419.675z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M921.006,604.777c-1.041,1.279-1.976,3.452-3.778,3.737
c-9.09,1.417-13.976-14.147-14.478-15.374c-0.909,7.215-2.184,13.897-0.314,17.643c1.638,3.279,11.362,11.517,15.767,10.832
c5.103-0.797,3.27-9.714,3.119-13.522C921.298,607.515,921.179,606.313,921.006,604.777z"/>
<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="914.1494" y1="621.6553" x2="914.1494" y2="604.7773">
<stop offset="0" style="stop-color:#8AA8DA"/>
<stop offset="1" style="stop-color:#EFF6FF"/>
</linearGradient>
<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_7_)" d="M921.006,604.777c-1.041,1.279-1.976,3.452-3.778,3.737
c-1.066,0.161-2.073,0.083-3.024-0.171c0.263,0.945,0.416,1.98,0.422,3.189c0.014,2.75-3.1,4.673-5.558,4.416
c-0.835-0.083-1.691-0.273-2.531-0.524c3.672,3.292,8.798,6.638,11.666,6.19c5.103-0.797,3.27-9.714,3.119-13.522
C921.298,607.515,921.179,606.313,921.006,604.777z"/>
<g>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M898.264,424.443c-11.958,15.981-8.154,71.043-14.499,90.858
c-2.076,6.463-4.292,5.819-5.357,8.606c-1.428,3.762-0.338,8.433-1.939,15.939c-2.072,9.713-7.237,19.48-5.672,24.955
c1.01,3.523,9.051,13.411,13.51,13.542c5.167,0.153,4.994-8.946,5.549-12.72c0.535-3.69,1.825-31.159,2.059-33.302
c0.868-7.927,32.182-73.459,35.426-94.017C930.416,418.813,905.03,415.396,898.264,424.443z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M885.747,565.291c-9.19-0.279-11.131-16.481-11.405-17.784
c-2.213,6.934-4.695,13.278-3.546,17.296c1.01,3.523,9.051,13.411,13.51,13.542c5.167,0.153,4.994-8.946,5.549-12.72
c0.082-0.577,0.178-1.769,0.29-3.309C888.895,563.374,887.573,565.338,885.747,565.291z"/>
<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="882.0557" y1="578.3467" x2="882.0557" y2="562.3164">
<stop offset="0" style="stop-color:#8AA8DA"/>
<stop offset="1" style="stop-color:#EFF6FF"/>
</linearGradient>
<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_8_)" d="M885.747,565.291c-1.07-0.035-2.048-0.302-2.935-0.726
c0.078,0.977,0.042,2.031-0.173,3.22c-0.5,2.691-3.906,4.012-6.274,3.314c-0.804-0.243-1.613-0.583-2.397-0.98
c3.012,3.904,7.434,8.142,10.338,8.226c5.167,0.153,4.994-8.946,5.549-12.72c0.082-0.577,0.178-1.769,0.29-3.309
C888.895,563.374,887.573,565.338,885.747,565.291z"/>
</g>
<g>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#C3391C" d="M858.569,205.528c-8.107,0-14.678,6.571-14.678,14.683
c0,8.107,6.57,14.678,14.678,14.678c8.106,0,14.685-6.571,14.685-14.678C873.254,212.099,866.676,205.528,858.569,205.528z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FD4B1B" d="M860.938,229.563c-15.058,0-15.083-23.409,0-23.409
c0.862,0,1.655,0.095,2.411,0.244c-1.501-0.524-3.103-0.869-4.78-0.869c-8.107,0-14.678,6.571-14.678,14.683
c0,8.107,6.57,14.678,14.678,14.678c8.106,0,14.685-6.571,14.685-14.678c0-2.625-0.745-5.059-1.959-7.196
C874.051,219.92,870.629,229.563,860.938,229.563z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#C3391C" d="M865.33,202.535c-4.91-2.887-10.618-3.167-15.552-1.273
c3.893-0.561,7.999,0.137,11.66,2.285c8.57,5.035,11.434,16.064,6.397,24.635c-2.148,3.661-5.396,6.268-9.076,7.672
c5.231-0.75,10.089-3.773,12.976-8.689C876.77,218.599,873.901,207.57,865.33,202.535z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M960.004,381.071c-4.977-0.214-0.816-4.047-4.977-3.679
c-4.512,0.393-8.612,1.667-12.296,5.233c-1.744,1.677-3.477,1.998-5.583,2.147c-9.012,0.625-19.845-6.001-36.951-6.846
c-5.784-0.291-11.38-1.725-17.248-2.213c-0.196,1.423-4.838,12.511-2.756,13.41c11.273,4.875,21.904,4.357,29.6,5.024
c8.821,0.762,16.945-0.703,29.259,0c9.41,0.541,14.91-0.179,18.387,0.089c3.256,0.249,4.994-0.655,4.863-3.138
c1.749-0.154,3.088-1.613,2.826-3.457c1.894-0.101,2.571-1.995,1.905-3.287c3.023-0.125,5.647-0.379,4.904-2.647
C971.575,380.595,962.951,381.202,960.004,381.071z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFC3AB" d="M960.004,381.071c-0.696-0.024-1.16-0.15-1.548-0.298
c-1.763,2.084-4.464,3.178-7.379,3.512c-8.293,8.101-17.893,7.934-29.614,6.34c-7.296-0.996-12.985-1.663-20.17-3.125
c-7.113-1.447-14.147-1.881-20.88-3.834c-0.744,2.668-1.144,5.059-0.22,5.458c11.273,4.875,21.904,4.357,29.6,5.024
c8.821,0.762,16.945-0.703,29.259,0c9.41,0.541,14.91-0.179,18.387,0.089c3.256,0.249,4.994-0.655,4.863-3.138
c1.749-0.154,3.088-1.613,2.826-3.457c1.894-0.101,2.571-1.995,1.905-3.287c3.023-0.125,5.647-0.379,4.904-2.647
C971.575,380.595,962.951,381.202,960.004,381.071z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M946.845,379.56l5.355,1.071
c1.738-0.424,4.125-1.506,5.779-3.524c3.315-0.357,5.179-2.125,5.209-4.548c-4.061,1.565-6.055,1.828-7.793,2.121L946.845,379.56
z"/>
<g>
<g>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M969.759,380.852c-3.398,0.143-4.221,0.189-7.601,0.611
c-3.202,0.398-2.565,1.936-0.32,2.078c2.91,0.189,5.005,0.214,7.963-0.012c1.66-0.125,1.976-0.803,2.036-1.453
C971.907,381.409,971.104,380.79,969.759,380.852z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M965.836,384.166c-3.379,0.167-6.517-0.042-9.916,0.143
c-3.214,0.172-2.647,1.626-0.421,1.958c2.885,0.441,6.654,0.65,9.617,0.637c1.666,0,2.023-0.708,2.132-1.398
C967.359,384.797,967.181,384.102,965.836,384.166z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M963.777,387.548c-3.041,0.017-5.655-0.341-8.708-0.311
c-2.894,0.023-2.595,1.655-0.601,2.09c2.582,0.564,5.963,0.946,8.611,1.077c1.5,0.064,1.821-0.625,1.936-1.298
C965.122,388.398,964.974,387.548,963.777,387.548z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M961.241,390.826c-3.035,0.019-4.554-0.064-7.605-0.037
c-2.882,0.025-2.395,1.501-0.405,1.937c2.589,0.563,4.679,0.678,7.333,0.804c1.494,0.07,1.821-0.614,1.928-1.298
C962.6,391.529,962.444,390.826,961.241,390.826z"/>
</g>
</g>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#C3391C" d="M860.104,222.801c-8.82-1.958-23.713-2.148-33.408,12.607
c-12.762,19.421-0.173,52.973,22.351,52.973c17.069,0,30.319-8.607,33.205-23.16
C883.723,257.805,891.282,229.693,860.104,222.801z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FD4B1B" d="M870.408,275.315c-6.529,2.167-14.012,0.322-19.82-2.934
c-5.625-3.154-10.559-8.63-12.138-15c-1.476-5.982-0.976-11.749,1.395-17.374c2.523-5.97,6.594-10.583,12.492-13.321
c2.196-1.671,4.668-2.963,7.148-3.522c0.382-0.089,0.78-0.155,1.18-0.227c-0.19-0.041-0.363-0.095-0.561-0.137
c-8.82-1.958-23.713-2.148-33.408,12.607c-12.762,19.421-0.173,52.973,22.351,52.973c15.795,0,28.295-7.38,32.373-20.005
c-0.203,0.214-0.394,0.482-0.602,0.678C877.807,271.964,874.384,273.994,870.408,275.315z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M885.65,314.391c-3.935-1.995-12.611-3.423-17.689-5.393
c-8.791-3.411-7.254-11.137-5.23-22.022l-16.244-5.719c-1.554,11.582,1.124,24.832-10.826,21.552
c-14.249-3.91-28.087,3.458-30.522,10.32l70.974,38.171c0,12.934,0.619,26.695,3.694,37.355l12.953-6.952
C892.759,369.061,901.472,322.402,885.65,314.391z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M783.829,369.939h14.303
c7.679-7.999,25.523-48.134,25.523-48.134l-16.857-11.111C796.538,324.766,787.747,354.371,783.829,369.939z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFC3AB" d="M783.829,369.939l3.43-1.021c-1.429-2.12,1.041-8.186,3.047-11
c5.607-7.916,5.214-12.665,9.553-21.213c3.87-7.642,8.733-14.665,12.548-22.313l-5.608-3.697
C796.538,324.766,787.747,354.371,783.829,369.939z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFC3AB" d="M835.66,302.808c-7.856-2.155-13.444-2.292-17.624,1.137
c3.351-1.047,7.023-1.339,10.137-0.953c4.79,0.583,8.576,5.357,12.725,5.863c7.679,0.946,16.387-9.267,20.772-15.874
c0.293-1.88,0.661-3.881,1.061-6.006l-16.244-5.719C844.933,292.838,847.61,306.088,835.66,302.808z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFC3AB" d="M883.176,352.912c-0.453,0.756-4.887,5.195-6.928,5.934
c0.165,10.736,1.094,21.266,3.558,29.808l6.804-3.453c-1.911-7.368-2.792-16.23-3.005-24.254
C883.532,358.174,883.354,355.512,883.176,352.912z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M859.558,235.39c-5.887-1.036-10.499-0.405-14.076,1.398
c-8.023,3.982-10.834,13.845-10.733,24.409c0,0.47,0,0.935,0.031,1.441c0.231,6.987,0.81,11.702,2.237,15.51
c1.275,3.382,9.999,15.589,17.262,15.619c6.654,0,16.01-10.934,17.553-13.476c3.173-5.35,3.607-11.267,4.143-18.088
C876.908,250.103,873.736,237.895,859.558,235.39z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFC3AB" d="M845.481,236.788c-8.023,3.982-10.834,13.845-10.733,24.409
c23.269-1.13,29.792-23.135,29.792-23.135C856.617,235.42,850.361,235.354,845.481,236.788z"/>
<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="802.0596" y1="437.0996" x2="920.8213" y2="437.0996">
<stop offset="0" style="stop-color:#FB6B14"/>
<stop offset="1" style="stop-color:#FDB522"/>
</linearGradient>
<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_9_)" d="M804.633,405.892
c-15.798,57.716,45.698,55.752,60.954,62.417c8.713-10.684,33.873-49.759,55.234-45.771
c-11.386-10.706-42.497-16.428-42.497-16.428C855.434,405.892,822.222,410.61,804.633,405.892z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFB725" d="M896.233,417.223c-11.713,6.322-15.868,14.399-23.741,24.083
c-4.168,5.132-10.108,19.099-17.059,16.665c-9.422-3.286-4.982-16.225-8.565-18.313c-3.513-2.048-17.624-1.013-21.237-3.881
c-11.54-9.174-14.623-28.177-20.998-29.885c-15.798,57.716,45.698,55.752,60.954,62.417
c8.713-10.684,33.873-49.759,55.234-45.771c-3.059-2.88-7.563-5.392-12.494-7.54
C904.603,414.628,900.764,414.771,896.233,417.223z"/>
<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="804.4609" y1="357.9941" x2="897.6338" y2="357.9941">
<stop offset="0" style="stop-color:#FB6B14"/>
<stop offset="1" style="stop-color:#FDB522"/>
</linearGradient>
<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_10_)" d="M874.925,310.665l-20.309,6.35
c0,0-13.844-9.874-20.908-16.266c0,0-18.914-2.613-27.695,7.005c-4.987,5.458,5.863,14.018,4.328,27.224
c-2.584,22.255-6.928,55.372-5.649,71.319c1.221,15.069,74.192,9.563,76.02-0.966c1.161-6.719-3.797-6.679-4.482-18.737
c-0.333-5.583-0.102-16.646,1.578-26.749c4.381-3.577,7.553-8.814,7.553-14.807c0-9.112,13.058-8.286,12.237-14.653
C895.15,311.379,874.925,310.665,874.925,310.665z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFB725" d="M854.616,317.015c0,0-13.844-9.874-20.908-16.266
c0,0-18.914-2.613-27.695,7.005c-4.987,5.458,5.863,14.018,4.328,27.224c-2.584,22.255-6.928,55.372-5.649,71.319
c0.959,11.824,50.027,10.914,69.329,4.218c-3.839-1.665-10.493-3.665-14.61-3.719c-17.036-0.232-26.405-7.589-35.827-14.784
c-5.064-3.864-1.63-7.553,3.506-3.633c5.678,4.333,22.308,11.292,22.308,4.28c0-16.54,17.762-29.653,13.601-34.276
c-4.975-5.543-11.285-21.124-1.76-23.844c4.492-1.28,5.355-4.525,5.278-5.37c-0.613-6.82,5.882-11.194,11.702-11.702
c3.202-0.279,6.601-2.863,8.23-3.481c-5.75-3.09-11.523-3.321-11.523-3.321L854.616,317.015z M849.458,362.56
c-7.09,1.197-17.316-6.167-20.415-4.13c-5.405,3.524-10.156,1.314-8.602-4.958c1.005-4.048-0.876-8.702-3.114-12.024
c-1.701-2.511-2.79-6.922-0.868-8.248c2.144-2.441,8.231-1.09,9.809,2.631c2.995,7.087,16.482,19.183,22.554,21.052
C850.98,357.549,855.819,361.488,849.458,362.56z"/>
<g>
<g>
<g>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFC3AB" d="M854.79,276.125c-1.929-0.006-3.81,0.762-3.945,1.101
c-0.353,0.809,0.903,1.101,1.623,1.149c0.279,0.024,0.829,0.106,1.197,0.196c0.613,0.144,1.244,0.144,1.852,0
c0.369-0.089,0.922-0.172,1.201-0.196c0.714-0.048,2.143-0.441,1.626-1.149C857.992,276.75,856.575,276.131,854.79,276.125z"
/>
</g>
</g>
</g>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#C3391C" d="M823.328,256.977c34.075,3.5,43.313-23.975,43.313-23.975
C827.369,221.444,823.328,256.977,823.328,256.977z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M860.688,377.68c-4.933-0.662-0.457-4.108-4.629-4.114
c-4.524-0.013-8.596,1.059-12.72,4.114c-3.84,2.851-28.844-5.762-44.802-11.275c-5.47-1.897-8.969-0.856-13.873,2.405
c-1.203,0.798-2.684,5.334,0.619,8.197c16.029,13.892,41.162,10.017,53.371,11.819c9.321,1.382,14.868,1.155,18.297,1.732
c3.22,0.542,5.033-0.201,5.131-2.689c1.756,0,3.22-1.327,3.123-3.191c1.894,0.061,2.739-1.761,2.185-3.105
c3.024,0.143,5.666,0.131,5.131-2.196C872.261,378.231,863.611,378.07,860.688,377.68z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFC3AB" d="M863.153,380.327c-2.566,2.874-5.577,5.214-9.554,6.04
c-2.953,0.619-14.881,1.317-21.159-1.325c-5.44-2.28-11.851-3.538-17.445-4.269c-8.231-1.083-14.606-4.333-22.421-7.291
c-3.178-1.203-4.881-3.513-5.726-6.024c-0.982,0.279-1.489,0.887-2.185,1.351c-1.203,0.798-2.684,5.334,0.619,8.197
c16.029,13.892,41.162,10.017,53.371,11.819c3.762,0.561,5.993-0.547,8.636-0.356c3.893,0.286,7.619,1.743,9.661,2.089
c3.22,0.542,5.033-0.201,5.131-2.689c1.756,0,3.22-1.327,3.123-3.191c1.894,0.061,2.739-1.761,2.185-3.105
c2.686,0.131,5.055,0.125,5.186-1.501C869.468,380.773,866.474,380.606,863.153,380.327z"/>
</g>
</g>
<g>
<path fill="#FFFFFF" d="M380.355,375.076h-35.95v6.353h35.95c1.756,0,3.178-1.417,3.178-3.172
C383.533,376.5,382.111,375.076,380.355,375.076z"/>
<path fill="#D0DDFD" d="M326.407,346.489l0.463,14.762l-11.481,13.825h35.177l11.511-11.54c1.304-1.303,1.953-3.119,1.774-4.952
l-1.167-12.095H326.407z"/>
<polygon fill="#333242" points="326.407,346.489 326.573,351.787 363.202,351.787 362.684,346.489 "/>
<g>
<g>
<path fill="#333242" d="M345.732,375.076h-29.826l11.548-11.54c1.297-1.303,1.952-3.119,1.773-4.952l-1.167-12.095h-6.381
l1.279,12.552l-11.689,11.69c-1.512,1.518-2.316,3.691-1.864,5.792c0.632,2.927,3.155,4.905,6.036,4.905h30.289
c1.756,0,3.172-1.417,3.172-3.172C348.904,376.5,347.488,375.076,345.732,375.076z"/>
</g>
</g>
<path fill="#D0DDFD" d="M417.4,220.962H253.786c-6.226,0-11.119,5.339-10.577,11.546l9.112,104.399
c0.477,5.488,5.072,9.696,10.583,9.696h163.61c6.232,0,11.125-5.334,10.576-11.542l-9.112-104.398
C427.501,225.176,422.912,220.962,417.4,220.962z"/>
<path fill="#D0DDFD" d="M431.572,229.581c-0.928-4.964-5.286-8.625-10.41-8.625H257.559c-6.237,0-11.124,5.339-10.588,11.552
l9.107,104.394c0.476,5.5,5.071,9.696,10.583,9.696h163.615c6.226,0,11.124-5.323,10.583-11.536l-9.125-104.392
C431.703,230.294,431.65,229.938,431.572,229.581z"/>
<path fill="#6F0871" d="M425.406,231.211c-0.184-2.214-2.011-3.886-4.238-3.886h-163.62c-1.632,0-2.673,0.863-3.137,1.375
c-0.488,0.518-1.25,1.631-1.113,3.262l0.464,5.422l8.648,98.975c0.191,2.215,2.012,3.894,4.25,3.894h163.609
c1.63,0,2.673-0.87,3.136-1.381c0.488-0.519,1.25-1.632,1.119-3.262l-8.57-98.227L425.406,231.211z"/>
<path fill="#333242" d="M421.168,227.319H257.554c-1.625,0-2.667,0.869-3.137,1.381c-0.489,0.518-1.256,1.631-1.119,3.262
l9.119,104.397c0.19,2.215,2.012,3.887,4.244,3.887h163.615c1.63,0,2.673-0.863,3.143-1.374c0.481-0.519,1.25-1.632,1.113-3.262
l-9.119-104.399C425.228,228.997,423.4,227.319,421.168,227.319z"/>
<g>
<path fill="#FFB725" d="M421.168,227.325h-163.62c-1.632,0-2.673,0.863-3.137,1.375c-0.488,0.518-1.25,1.631-1.113,3.262
l0.464,5.422h172.192l-0.548-6.173C425.222,228.997,423.395,227.325,421.168,227.325z"/>
<linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="290.2002" y1="232.3516" x2="387.3311" y2="232.3516">
<stop offset="2.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#8AA8DA"/>
</linearGradient>
<polygon fill="url(#SVGID_11_)" points="290.2,229.729 290.741,234.974 387.331,234.974 386.783,229.729 "/>
<g>
<g>
<g>
<path fill="#FFFFFF" d="M420.954,230.729l-3.292,3.613c-0.131,0.137-0.107,0.37,0.047,0.506c0.149,0.142,0.375,0.142,0.506,0
l3.298-3.607c0.125-0.143,0.106-0.369-0.047-0.512C421.311,230.592,421.084,230.592,420.954,230.729z"/>
<path fill="#FFFFFF" d="M417.859,230.729c-0.155-0.137-0.387-0.137-0.512,0c-0.131,0.144-0.107,0.37,0.042,0.512l3.928,3.607
c0.149,0.142,0.381,0.142,0.506,0c0.13-0.137,0.106-0.37-0.042-0.506L417.859,230.729z"/>
</g>
<g>
<path fill="#FFFFFF" d="M412.198,230.36c-1.339,0-2.333,1.089-2.214,2.434c0.113,1.339,1.297,2.429,2.644,2.429
c1.345,0,2.338-1.089,2.22-2.429C414.734,231.45,413.544,230.36,412.198,230.36z M412.58,234.669
c-1.036,0-1.958-0.84-2.048-1.875c-0.089-1.042,0.678-1.887,1.721-1.887c1.035,0,1.952,0.845,2.048,1.887
C414.389,233.83,413.615,234.669,412.58,234.669z"/>
</g>
<g>
<path fill="#FFFFFF" d="M403.188,234.289c-0.155,0-0.274,0.119-0.257,0.273c0.019,0.155,0.149,0.274,0.304,0.274h4.38
c0.155,0,0.268-0.119,0.25-0.274c-0.005-0.155-0.142-0.273-0.297-0.273H403.188z"/>
</g>
</g>
<g>
<g>
<path fill="#FFFFFF" d="M261.13,234.134c-0.149,0-0.262,0.119-0.25,0.273c0.018,0.155,0.148,0.273,0.297,0.273h4.393
c0.149,0,0.255-0.119,0.244-0.273c-0.012-0.155-0.144-0.273-0.298-0.273H261.13z"/>
</g>
</g>
<g>
<g>
<path fill="#FFFFFF" d="M260.994,232.521c-0.155,0-0.268,0.119-0.25,0.273c0.011,0.149,0.142,0.273,0.297,0.273h4.38
c0.154,0,0.268-0.125,0.25-0.273c-0.006-0.155-0.143-0.273-0.297-0.273H260.994z"/>
</g>
</g>
<g>
<g>
<path fill="#FFFFFF" d="M260.851,230.901c-0.155,0-0.262,0.125-0.25,0.274c0.012,0.154,0.144,0.274,0.298,0.274h4.386
c0.155,0,0.262-0.12,0.25-0.274c-0.012-0.148-0.143-0.274-0.297-0.274H260.851z"/>
</g>
</g>
</g>
</g>
<g>
<linearGradient id="SVGID_12_" gradientUnits="userSpaceOnUse" x1="274.4844" y1="251.3438" x2="380.2632" y2="251.3438">
<stop offset="2.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#8AA8DA"/>
</linearGradient>
<path fill="url(#SVGID_12_)" d="M378.891,250.067H275.678c-0.697,0-1.233,0.577-1.191,1.273c0.054,0.702,0.667,1.28,1.37,1.28
H379.07c0.702,0,1.238-0.578,1.19-1.28C380.207,250.644,379.593,250.067,378.891,250.067z"/>
<linearGradient id="SVGID_13_" gradientUnits="userSpaceOnUse" x1="256.002" y1="243.1777" x2="325.0166" y2="243.1777">
<stop offset="2.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#8AA8DA"/>
</linearGradient>
<path fill="url(#SVGID_13_)" d="M323.264,241.539H257.53c-0.899,0-1.583,0.738-1.524,1.642c0.065,0.898,0.852,1.637,1.756,1.637
h65.728c0.898,0,1.583-0.738,1.523-1.637C324.948,242.276,324.162,241.539,323.264,241.539z"/>
<linearGradient id="SVGID_14_" gradientUnits="userSpaceOnUse" x1="256.5742" y1="251.3438" x2="265.7583" y2="251.3438">
<stop offset="2.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#8AA8DA"/>
</linearGradient>
<path fill="url(#SVGID_14_)" d="M264.392,250.067h-6.625c-0.702,0-1.237,0.577-1.19,1.273c0.053,0.702,0.661,1.28,1.369,1.28
h6.625c0.696,0,1.232-0.578,1.185-1.28C265.708,250.644,265.095,250.067,264.392,250.067z"/>
<path fill="#40C8CB" d="M312.05,258.031H258.91c-0.439,0-0.773,0.357-0.744,0.792c0.037,0.434,0.417,0.792,0.851,0.792h53.152
c0.435,0,0.762-0.357,0.732-0.792C312.872,258.388,312.49,258.031,312.05,258.031z"/>
<path fill="#40C8CB" d="M312.502,264.495h-53.146c-0.434,0-0.768,0.351-0.731,0.791c0.029,0.435,0.41,0.792,0.845,0.792h53.145
c0.441,0,0.768-0.357,0.738-0.792C313.324,264.846,312.937,264.495,312.502,264.495z"/>
<path fill="#40C8CB" d="M312.955,270.953H259.81c-0.435,0-0.769,0.357-0.738,0.792c0.029,0.44,0.41,0.792,0.851,0.792h53.145
c0.435,0,0.768-0.352,0.732-0.792C313.771,271.31,313.39,270.953,312.955,270.953z"/>
<path fill="#40C8CB" d="M313.407,277.417h-53.146c-0.434,0-0.767,0.357-0.738,0.792c0.03,0.435,0.41,0.792,0.845,0.792h53.145
c0.44,0,0.774-0.357,0.738-0.792C314.228,277.774,313.841,277.417,313.407,277.417z"/>
<path fill="#40C8CB" d="M268.82,283.88h-8.106c-0.44,0-0.768,0.351-0.738,0.792c0.03,0.434,0.411,0.791,0.845,0.791h8.112
c0.435,0,0.769-0.357,0.738-0.791C269.636,284.231,269.255,283.88,268.82,283.88z"/>
<path fill="#40C8CB" d="M282.974,283.88h-8.106c-0.434,0-0.767,0.351-0.738,0.792c0.03,0.434,0.411,0.791,0.851,0.791h8.106
c0.435,0,0.768-0.357,0.738-0.791C283.795,284.231,283.415,283.88,282.974,283.88z"/>
<path fill="#40C8CB" d="M297.128,283.88h-8.106c-0.44,0-0.768,0.351-0.744,0.792c0.036,0.434,0.417,0.791,0.851,0.791h8.106
c0.441,0,0.769-0.357,0.744-0.791C297.95,284.231,297.563,283.88,297.128,283.88z"/>
<path fill="#40C8CB" d="M311.282,283.88h-8.107c-0.441,0-0.768,0.351-0.738,0.792c0.03,0.434,0.411,0.791,0.846,0.791h8.112
c0.435,0,0.768-0.357,0.732-0.791C312.098,284.231,311.717,283.88,311.282,283.88z"/>
<path fill="#40C8CB" d="M325.43,283.88h-8.106c-0.428,0-0.762,0.351-0.738,0.792c0.035,0.434,0.416,0.791,0.851,0.791h8.106
c0.44,0,0.774-0.357,0.744-0.791C326.251,284.231,325.871,283.88,325.43,283.88z"/>
<path fill="#40C8CB" d="M339.59,283.88h-8.112c-0.436,0-0.769,0.351-0.738,0.792c0.035,0.434,0.416,0.791,0.851,0.791h8.106
c0.441,0,0.768-0.357,0.738-0.791C340.406,284.231,340.025,283.88,339.59,283.88z"/>
<path fill="#40C8CB" d="M314.312,290.338h-53.146c-0.435,0-0.769,0.357-0.745,0.797c0.036,0.435,0.417,0.792,0.851,0.792h53.146
c0.44,0,0.768-0.357,0.738-0.792C315.126,290.695,314.746,290.338,314.312,290.338z"/>
<path fill="#40C8CB" d="M422.055,268.227h-65.186c-0.607,0-1.066,0.5-1.024,1.107c0.042,0.607,0.572,1.107,1.179,1.107h65.187
c0.607,0,1.071-0.5,1.029-1.107C423.198,268.727,422.662,268.227,422.055,268.227z"/>
<path fill="#86C0F0" d="M422.733,277.899h-65.186c-0.608,0-1.071,0.5-1.024,1.102c0.036,0.607,0.571,1.106,1.179,1.106h65.186
c0.607,0,1.071-0.5,1.023-1.106C423.87,278.399,423.341,277.899,422.733,277.899z"/>
<path fill="#86C0F0" d="M423.365,286.952h-65.181c-0.612,0-1.071,0.5-1.035,1.106c0.047,0.601,0.578,1.102,1.19,1.102h65.181
c0.601,0,1.072-0.5,1.023-1.102C424.507,287.452,423.972,286.952,423.365,286.952z"/>
<path fill="#86C0F0" d="M423.996,296.004h-65.181c-0.607,0-1.077,0.5-1.035,1.108c0.047,0.607,0.578,1.106,1.19,1.106h65.181
c0.613,0,1.071-0.499,1.029-1.106C425.138,296.505,424.603,296.004,423.996,296.004z"/>
<path fill="#86C0F0" d="M424.626,305.064h-65.187c-0.601,0-1.065,0.494-1.023,1.101c0.041,0.608,0.577,1.107,1.183,1.107h65.181
c0.607,0,1.077-0.5,1.03-1.107C425.769,305.558,425.233,305.064,424.626,305.064z"/>
<path fill="#86C0F0" d="M393.568,314.116h-33.492c-0.613,0-1.071,0.495-1.029,1.102c0.047,0.614,0.577,1.107,1.184,1.107h33.498
c0.601,0,1.065-0.493,1.023-1.107C394.711,314.611,394.175,314.116,393.568,314.116z"/>
<path fill="#86C0F0" d="M415.9,320.276h-33.492c-0.612,0-1.071,0.5-1.029,1.108s0.572,1.107,1.185,1.107h33.492
c0.607,0,1.071-0.5,1.024-1.107C417.043,320.776,416.501,320.276,415.9,320.276z"/>
<path fill="#86C0F0" d="M416.341,326.663h-33.492c-0.607,0-1.066,0.494-1.024,1.107c0.036,0.608,0.578,1.108,1.179,1.108h33.492
c0.613,0,1.072-0.5,1.03-1.108C417.483,327.157,416.954,326.663,416.341,326.663z"/>
<path fill="#86C0F0" d="M287.558,326.663h-15.612c-0.607,0-1.072,0.494-1.03,1.107c0.042,0.608,0.578,1.108,1.185,1.108h15.613
c0.613,0,1.071-0.5,1.023-1.108C288.7,327.157,288.165,326.663,287.558,326.663z"/>
<path fill="#86C0F0" d="M287.188,321.384h-15.612c-0.607,0-1.072,0.5-1.03,1.107c0.047,0.606,0.577,1.1,1.184,1.1h15.612
c0.607,0,1.072-0.494,1.03-1.1C288.325,321.884,287.795,321.384,287.188,321.384z"/>
<path fill="#86C0F0" d="M286.82,316.105h-15.613c-0.607,0-1.071,0.5-1.023,1.107c0.042,0.612,0.572,1.106,1.179,1.106h15.613
c0.607,0,1.071-0.494,1.03-1.106C287.962,316.605,287.427,316.105,286.82,316.105z"/>
<path fill="#86C0F0" d="M286.45,310.831h-15.606c-0.612,0-1.077,0.494-1.035,1.107c0.047,0.607,0.577,1.101,1.19,1.101h15.612
c0.601,0,1.066-0.494,1.023-1.101C287.593,311.325,287.057,310.831,286.45,310.831z"/>
<path fill="#86C0F0" d="M301.2,310.831h-4.744c-0.613,0-1.072,0.494-1.03,1.107c0.042,0.607,0.572,1.101,1.184,1.101h4.738
c0.614,0,1.072-0.494,1.031-1.101C302.336,311.325,301.807,310.831,301.2,310.831z"/>
<path fill="#86C0F0" d="M302.009,322.498h-4.737c-0.614,0-1.072,0.5-1.03,1.107c0.048,0.612,0.571,1.105,1.184,1.105h4.738
c0.613,0,1.072-0.494,1.03-1.105C303.151,322.997,302.622,322.498,302.009,322.498z"/>
</g>
<g opacity="0.17">
<polygon fill="#FFFFFF" points="369.486,346.598 389.664,346.598 437.482,296.541 435.768,276.774 "/>
<path fill="#FFFFFF" d="M421.162,220.956h-35.248L267.505,346.598h53.729l110.338-117.017
C430.644,224.617,426.287,220.956,421.162,220.956z"/>
<polygon fill="#FFFFFF" points="249.72,264.025 253.809,310.813 337.375,220.956 289.771,220.956 "/>
</g>
</g>
<g>
<linearGradient id="SVGID_15_" gradientUnits="userSpaceOnUse" x1="782.1553" y1="610.2832" x2="782.1553" y2="405.7305">
<stop offset="2.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#8AA8DA"/>
</linearGradient>
<rect x="777.563" y="405.73" fill="url(#SVGID_15_)" width="9.183" height="204.553"/>
<rect x="774.522" y="405.73" fill="#D0DDFD" width="3.041" height="204.553"/>
<linearGradient id="SVGID_16_" gradientUnits="userSpaceOnUse" x1="1092.9541" y1="610.2832" x2="1092.9541" y2="405.7305">
<stop offset="2.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#8AA8DA"/>
</linearGradient>
<rect x="1088.358" y="405.73" fill="url(#SVGID_16_)" width="9.19" height="204.553"/>
<rect x="1085.329" y="405.73" fill="#D0DDFD" width="3.029" height="204.553"/>
<rect x="1014.894" y="405.73" fill="#D0DDFD" width="3.035" height="204.553"/>
<linearGradient id="SVGID_17_" gradientUnits="userSpaceOnUse" x1="715.2114" y1="610.2832" x2="715.2114" y2="405.7305">
<stop offset="2.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#8AA8DA"/>
</linearGradient>
<rect x="710.619" y="405.73" fill="url(#SVGID_17_)" width="9.185" height="204.553"/>
<linearGradient id="SVGID_18_" gradientUnits="userSpaceOnUse" x1="1022.375" y1="610.2832" x2="1022.375" y2="405.7305">
<stop offset="2.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#8AA8DA"/>
</linearGradient>
<rect x="1017.78" y="405.73" fill="url(#SVGID_18_)" width="9.189" height="204.553"/>
<rect x="707.591" y="405.73" fill="#D0DDFD" width="3.028" height="204.553"/>
<linearGradient id="SVGID_19_" gradientUnits="userSpaceOnUse" x1="724.7202" y1="387.9209" x2="1139.3906" y2="387.9209">
<stop offset="2.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#8AA8DA"/>
</linearGradient>
<rect x="724.72" y="381.403" fill="url(#SVGID_19_)" width="414.67" height="13.035"/>
<linearGradient id="SVGID_20_" gradientUnits="userSpaceOnUse" x1="660.0464" y1="387.9209" x2="724.7202" y2="387.9209">
<stop offset="1.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#C4D8FB"/>
</linearGradient>
<rect x="660.046" y="381.403" fill="url(#SVGID_20_)" width="64.674" height="13.035"/>
<linearGradient id="SVGID_21_" gradientUnits="userSpaceOnUse" x1="739.5234" y1="400.7832" x2="1113.1611" y2="400.7832">
<stop offset="2.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#8AA8DA"/>
</linearGradient>
<rect x="739.523" y="394.266" fill="url(#SVGID_21_)" width="373.638" height="13.035"/>
<linearGradient id="SVGID_22_" gradientUnits="userSpaceOnUse" x1="688.1699" y1="400.7832" x2="744.3867" y2="400.7832">
<stop offset="1.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#C4D8FB"/>
</linearGradient>
<rect x="688.17" y="394.266" fill="url(#SVGID_22_)" width="56.217" height="13.035"/>
</g>
<g>
<linearGradient id="SVGID_23_" gradientUnits="userSpaceOnUse" x1="289.3872" y1="507.0361" x2="289.3872" y2="610.7994">
<stop offset="0" style="stop-color:#8AA8DA"/>
<stop offset="1" style="stop-color:#EFF6FF"/>
</linearGradient>
<rect x="284.795" y="405.73" fill="url(#SVGID_23_)" width="9.184" height="204.553"/>
<rect x="281.76" y="405.73" fill="#D0DDFD" width="3.035" height="204.553"/>
<linearGradient id="SVGID_24_" gradientUnits="userSpaceOnUse" x1="600.1836" y1="507.0361" x2="600.1836" y2="610.7994">
<stop offset="0" style="stop-color:#8AA8DA"/>
<stop offset="1" style="stop-color:#EFF6FF"/>
</linearGradient>
<rect x="595.591" y="405.73" fill="url(#SVGID_24_)" width="9.185" height="204.553"/>
<rect x="592.556" y="405.73" fill="#D0DDFD" width="3.036" height="204.553"/>
<rect x="522.126" y="405.73" fill="#D0DDFD" width="3.036" height="204.553"/>
<linearGradient id="SVGID_25_" gradientUnits="userSpaceOnUse" x1="222.4458" y1="507.0361" x2="222.4458" y2="610.7994">
<stop offset="0" style="stop-color:#8AA8DA"/>
<stop offset="1" style="stop-color:#EFF6FF"/>
</linearGradient>
<rect x="217.854" y="405.73" fill="url(#SVGID_25_)" width="9.184" height="204.553"/>
<linearGradient id="SVGID_26_" gradientUnits="userSpaceOnUse" x1="529.6079" y1="507.0361" x2="529.6079" y2="610.7994">
<stop offset="0" style="stop-color:#8AA8DA"/>
<stop offset="1" style="stop-color:#EFF6FF"/>
</linearGradient>
<rect x="525.013" y="405.73" fill="url(#SVGID_26_)" width="9.189" height="204.553"/>
<rect x="214.824" y="405.73" fill="#D0DDFD" width="3.03" height="204.553"/>
<linearGradient id="SVGID_27_" gradientUnits="userSpaceOnUse" x1="231.9595" y1="387.9209" x2="646.624" y2="387.9209">
<stop offset="2.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#8AA8DA"/>
</linearGradient>
<rect x="231.959" y="381.403" fill="url(#SVGID_27_)" width="414.665" height="13.035"/>
<linearGradient id="SVGID_28_" gradientUnits="userSpaceOnUse" x1="167.2852" y1="387.9209" x2="231.9595" y2="387.9209">
<stop offset="1.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#C4D8FB"/>
</linearGradient>
<rect x="167.285" y="381.403" fill="url(#SVGID_28_)" width="64.674" height="13.035"/>
<linearGradient id="SVGID_29_" gradientUnits="userSpaceOnUse" x1="246.7559" y1="400.7832" x2="620.3945" y2="400.7832">
<stop offset="2.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#8AA8DA"/>
</linearGradient>
<rect x="246.756" y="394.266" fill="url(#SVGID_29_)" width="373.639" height="13.035"/>
<linearGradient id="SVGID_30_" gradientUnits="userSpaceOnUse" x1="195.4023" y1="400.7832" x2="251.6191" y2="400.7832">
<stop offset="1.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#C4D8FB"/>
</linearGradient>
<rect x="195.402" y="394.266" fill="url(#SVGID_30_)" width="56.217" height="13.035"/>
</g>
<g>
<path fill="#FFFFFF" d="M1069.372,219.432H901.168c-5.666,0-10.387,4.334-10.875,9.97l-9.367,107.333
c-0.561,6.375,4.471,11.869,10.874,11.869h168.203c5.661,0,10.387-4.335,10.876-9.971l9.366-107.333
C1080.806,224.92,1075.775,219.432,1069.372,219.432z"/>
<path fill="#0D5BD9" d="M1073.646,219.426H905.454c-5.274,0-9.749,3.762-10.703,8.862c-0.083,0.37-9.553,108.446-9.553,108.446
c-0.547,6.387,4.483,11.855,10.887,11.855h168.198c5.672,0,10.387-4.309,10.887-9.969l9.36-107.321
C1085.08,224.914,1080.05,219.426,1073.646,219.426z"/>
<path fill="#0A429F" d="M1054.248,248.55H942.313c-1.803,0-3.356,1.25-3.736,2.987c-0.281,2.97-6.25,70.955-6.334,71.959
c-0.095,1.09,0.258,2.125,0.994,2.929c0.739,0.803,1.749,1.244,2.846,1.244h111.939c2.006,0,3.655-1.506,3.833-3.512l6.231-71.418
c0.095-1.088-0.263-2.136-0.999-2.94C1056.349,248.996,1055.338,248.55,1054.248,248.55z"/>
<path fill="#FFFFFF" d="M969.015,325.884h6.56c0,0,3.958-15.274,18.088-15.274C993.662,310.61,976.466,306.844,969.015,325.884z"
/>
<path fill="#0D5BD9" d="M1032.124,374.875h-36.956v6.528h36.956c1.804,0,3.268-1.457,3.268-3.261
C1035.392,376.339,1033.928,374.875,1032.124,374.875z"/>
<linearGradient id="SVGID_31_" gradientUnits="userSpaceOnUse" x1="965.3369" y1="342.7427" x2="1015.1895" y2="342.7427">
<stop offset="2.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#8AA8DA"/>
</linearGradient>
<path fill="url(#SVGID_31_)" d="M993.662,310.61c-10.982,0-19.545,9.488-18.44,20.411l2.816,27.521l-12.701,16.333h36.159
l11.838-11.869c1.339-1.339,2.006-3.203,1.827-5.083l-3.054-30.624C1011.155,317.824,1003.187,310.61,993.662,310.61z"/>
<g>
<path fill="#FFFFFF" d="M996.524,374.875h-30.658l11.869-11.869c1.34-1.339,2.006-3.203,1.819-5.083l-4.141-32.039h-6.399
l4.102,32.51l-12.018,12.011c-1.554,1.565-2.38,3.803-1.911,5.951c0.645,3.013,3.245,5.047,6.202,5.047h31.135
c1.805,0,3.263-1.457,3.263-3.261C999.787,376.339,998.329,374.875,996.524,374.875z"/>
</g>
<path fill="#0D5BD9" d="M993.662,322.492c-3.887,0-7.034,3.153-7.034,7.034c0,3.887,3.147,7.042,7.034,7.042
c3.886,0,7.041-3.155,7.041-7.042C1000.703,325.645,997.548,322.492,993.662,322.492z"/>
</g>
<g>
<g>
<path fill="#FFCAB8" d="M455.702,560.167c-0.125-0.833-17.541,4.273-17.88,9.78c-0.292,4.7,3.203,12.212-0.149,17.265
c-3.863,5.804-20.189,13.149-28.194,14.321c-0.411,1.186,0.976,2.179,2.16,2.578c5.923,2.006,12.375,1.131,18.594,0.482
c7.202-0.75,14.445-1.161,21.689-1.232c3.226-0.037,7.046-0.322,8.684-3.101c1.22-2.073,0.66-4.673,0.381-7.066
C460.112,585.92,456.744,567.423,455.702,560.167z"/>
<path fill="#FFC3AB" d="M455.702,560.167c-0.06-0.411-8.505,4.887-12.534,4.286c0.268,0.512,5.094,5.499,5.321,6.041
c6.463,15.683-3.411,27.842-16.69,33.98c6.69-0.656,13.404-1.049,20.124-1.113c3.226-0.037,7.046-0.322,8.684-3.101
c1.22-2.073,0.66-4.673,0.381-7.066C460.112,585.92,456.744,567.423,455.702,560.167z"/>
<path fill="#FD4B1B" d="M460.856,589.844c-2.012-1.505-14.85,8.417-29.576,8.417c0-1.953-1.857-5.269-4.285-4.428
c-6.476,2.243-17.868,6.313-19.147,6.849c-4.132,1.727-2.507,8.672-0.066,8.672c2.023,0,15.355,0,22.855,0
c4.351,0,11.291-3.998,18.296-3.998c7.833,0,10.148-0.262,11.113-0.697C467.457,601.324,464.583,592.616,460.856,589.844z"/>
<path fill="#C3391C" d="M448.327,600.836c-5.214,0.275-21.594,2.257-24.361,3.002c-3.929,1.058-8.268,1.113-12.214,0.033
c-1.916-0.521-3.625-1.33-5.148-2.349c-2.477,2.47-0.977,7.831,1.178,7.831h22.855c4.351,0,11.291-3.998,18.296-3.998
c7.833,0,10.148-0.262,11.113-0.697c5.839-2.631,5.261-8.554,2.947-12.326C459.927,597.432,454.683,600.504,448.327,600.836z"/>
<path fill="#C3391C" d="M446.322,609.354h14.379l3.613-9.207l-17,4.886C447.679,606.765,446.322,609.354,446.322,609.354z"/>
</g>
<path fill="#333242" d="M451.309,423.943c0,0-47.849,1.061-63.99,24.701c-9.356,13.725,42.522,117.564,49.759,134.146
c11.208,2.106,17.969-0.125,24.284-4.487c-6.041-33.35-15.41-101.839-25.045-119.497
C430.477,448.097,451.006,436.122,451.309,423.943z"/>
<g>
<path fill="#FFCAB8" d="M405.884,571.244c-0.12-0.834-16.487-5.477-16.827,0.029c-0.292,4.703,4.946,11.981,0.833,15.713
c-4.72,4.285-22.219,13.375-30.23,14.547c-0.411,1.186,0.976,2.179,2.161,2.578c5.922,2.006,12.374,1.131,18.594,0.482
c7.201-0.75,14.445-1.161,21.695-1.232c3.22-0.037,7.042-0.322,8.684-3.101c1.22-2.073,0.66-4.673,0.375-7.066
C410.293,585.92,406.925,578.504,405.884,571.244z"/>
<path fill="#FFC3AB" d="M405.884,571.244c-0.06-0.405-3.952-1.702-7.982-2.31c0.262,0.519,0.548,1.018,0.768,1.56
c6.47,15.683-3.41,27.842-16.689,33.98c6.696-0.656,13.404-1.049,20.13-1.113c3.22-0.037,7.042-0.322,8.684-3.101
c1.22-2.073,0.66-4.673,0.375-7.066C410.293,585.92,406.925,578.504,405.884,571.244z"/>
<path fill="#FD4B1B" d="M411.044,589.844c-2.018-1.505-14.85,8.417-29.576,8.417c0-1.953-1.857-5.269-4.286-4.428
c-6.476,2.243-17.874,6.313-19.148,6.849c-4.136,1.727-2.517,8.672-0.071,8.672c2.024,0,15.362,0,22.856,0
c4.357,0,11.297-3.998,18.303-3.998c7.821,0,10.142-0.262,11.112-0.697C417.639,601.324,414.764,592.616,411.044,589.844z"/>
<path fill="#C3391C" d="M398.508,600.836c-5.208,0.275-21.593,2.257-24.355,3.002c-3.928,1.058-8.273,1.113-12.213,0.033
c-1.922-0.521-3.63-1.33-5.148-2.349c-2.482,2.47-0.976,7.831,1.172,7.831h22.856c4.357,0,11.297-3.998,18.303-3.998
c7.821,0,10.142-0.262,11.112-0.697c5.839-2.631,5.262-8.554,2.941-12.326C410.109,597.432,404.866,600.504,398.508,600.836z"/>
<path fill="#C3391C" d="M396.509,609.354h14.375l3.618-9.207l-17.005,4.886C397.86,606.765,396.509,609.354,396.509,609.354z"/>
</g>
<path fill="#42445D" d="M396.765,415.194c0,0-63.806,6.369-63.806,41.164c0,16.833,47.473,117.641,52.33,129.486
c9.785,3.803,21.451-0.965,26.754-6.191c-1.75-4.606-25.695-96.036-31.611-118.795
C377.314,448.828,396.462,427.599,396.765,415.194z"/>
<path fill="#42445D" d="M450.411,410.493c-39.641,0-67.771,5.927-79.013,10.022c-17.368,6.333-33.153,43.747,14.165,48.169
c8.458,0.793,50.634,0,62.235,0c76.579,0,76.828-13.172,76.828-25.177C524.625,431.496,490.045,410.493,450.411,410.493z"/>
<path fill="#FFB725" d="M371.29,350.574c-3.172,8.111,7.214,19.909,10.952,18.403c36.682-14.79,61.532-44.217,61.532-44.217
l-16.005-30.951C427.769,293.809,374.463,342.46,371.29,350.574z"/>
<linearGradient id="SVGID_32_" gradientUnits="userSpaceOnUse" x1="373.4219" y1="340.6836" x2="443.7744" y2="340.6836">
<stop offset="0" style="stop-color:#FB6B14"/>
<stop offset="1" style="stop-color:#FDB522"/>
</linearGradient>
<path fill="url(#SVGID_32_)" d="M384.307,360.222c-3.541,1.392-7.237,2.035-10.885,2.006c2.719,4.386,6.767,7.576,8.82,6.749
c36.682-14.79,61.532-44.217,61.532-44.217l-8.512-12.5C424.258,333.413,405.835,351.782,384.307,360.222z"/>
<linearGradient id="SVGID_33_" gradientUnits="userSpaceOnUse" x1="507.0439" y1="329.6694" x2="590.645" y2="329.6694">
<stop offset="0" style="stop-color:#FB6B14"/>
<stop offset="1" style="stop-color:#FDB522"/>
</linearGradient>
<path fill="url(#SVGID_33_)" d="M521.983,291.202l-14.939,38.921c0,0,50.062,38.015,72.144,38.015
c5.935,0,18.606-8.951,6.202-21.272C579.206,340.728,521.983,291.202,521.983,291.202z"/>
<path fill="#FFB725" d="M477.563,279.333c-22.736,0-50.86,9.19-50.258,16.458c6.273,75.072-1.351,115.165-1.351,115.165
c8.684,9.464,23.635,18.54,35.628,23.213c28.564,11.04,60.323,10.457,65.573,7.488c0.453-0.257,0.697-0.543,0.745-0.786
c0.993-5.667,2.314-136.771-0.048-142.557C527.691,297.855,521.091,279.333,477.563,279.333z"/>
<linearGradient id="SVGID_34_" gradientUnits="userSpaceOnUse" x1="461.582" y1="362.6719" x2="529.1768" y2="362.6719">
<stop offset="0" style="stop-color:#FB6B14"/>
<stop offset="1" style="stop-color:#FDB522"/>
</linearGradient>
<path fill="url(#SVGID_34_)" d="M527.239,296.986c-0.208-0.452-0.458-0.862-0.75-1.279c-0.286-0.417-0.571-0.827-0.905-1.238
c-0.292-0.375-12.499-12.629-24.813-12.629c24.438,15.796,13.319,68.157,5.916,91.803c-6.363,20.171-14.387,35.099-30.219,49.445
c-4.714,4.261-9.636,8.021-14.886,11.082c28.564,11.04,60.323,10.457,65.573,7.488c0.453-0.257,0.697-0.543,0.745-0.786
c0.993-5.667,2.314-136.771-0.048-142.557C527.691,297.855,527.483,297.404,527.239,296.986z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M299.932,370.238c-3.964-1.47-9.267,0.494-13.017,1.685
c-2.214,0.708-6.69,1.903-7.869,3.393c-1.101,1.367-0.137,4.041,2.602,3.024c6.618-2.465,16.642,4.582,23.7,2.23
c1.167-0.392,11.125-4.671,12.214-4.987c-1.089-2.256-4.285-7.935-4.696-10.279C311.58,365.662,301.723,370.905,299.932,370.238z"
/>
<path fill="#FFC3AB" d="M484.325,208.284c-4.095-3.273-9.505-4.619-14.755-4.482c-5.244,0.138-10.362,1.655-15.237,3.583
c-3.619,1.429-14.726,8.167-11.512,32.332c0.744,5.612,3.042,21.504,6.059,26.302c4.87,7.72,15.874,11.893,24.266,8.333
c27.034-11.458,21.076-44.312,19.779-50.282C491.628,218.099,489.099,212.094,484.325,208.284z"/>
<path fill="#FFCAB8" d="M454.648,266.614c-5.16-6.678-7.726-14.529-7.851-22.999c-0.071-4.487,0.53-8.964,0.399-13.47
c-0.315-10.719,6.893-21.069,16.583-25.617c-3.221,0.649-6.386,1.649-9.446,2.857c-3.619,1.429-14.726,8.167-11.512,32.332
c0.744,5.612,3.042,21.504,6.059,26.302c3.263,5.172,9.285,8.744,15.434,9.464C460.63,273.072,457.327,270.078,454.648,266.614z"
/>
<path fill="#FFC3AB" d="M460.624,256.906c-0.089,7.708-1.279,16.236-1.75,23.784c-0.476,7.547,30.355,7.649,29.862,0
c-1.031-15.861,0-35.236,0-35.236S460.713,249.198,460.624,256.906z"/>
<path fill="#FFCAB8" d="M459.612,271.893c-0.238,2.524-0.588,6.417-0.738,8.797c-0.095,1.554,1.148,2.786,3.154,3.703
c-0.155-1.899-0.31-3.81-0.327-5.643C461.689,277.405,461.427,273.328,459.612,271.893z"/>
<path fill="#42445D" d="M471.718,198.237c-20.7,0-26.254,17.677-36.783,19.23c21.731,5.482,10.898,43.622,39.974,51.991
c4.828,1.394,16.166,2.726,22.969-10.493C515.608,224.521,497.717,198.237,471.718,198.237z"/>
<path fill="#333242" d="M471.718,198.237c-13.933,0-24.742,16.439-24.742,29.873c6.743,13.571,6.851,35.284,27.933,41.349
c4.828,1.394,16.166,2.726,22.969-10.493C515.608,224.521,497.717,198.237,471.718,198.237z"/>
<path fill="#FFB725" d="M382.367,349.888c-6.119-0.762-23.909,2.726-29.843,4.375c-9.369,2.608-42.873,10.167-42.873,10.167
s-0.321,5.862,2.363,15.111c0,0,47.026-4.361,66.288-9.266C397.515,365.375,388.64,350.674,382.367,349.888z"/>
<linearGradient id="SVGID_35_" gradientUnits="userSpaceOnUse" x1="309.6743" y1="368.5835" x2="390.9282" y2="368.5835">
<stop offset="0" style="stop-color:#FB6B14"/>
<stop offset="1" style="stop-color:#FDB522"/>
</linearGradient>
<path fill="url(#SVGID_35_)" d="M309.674,366.315c0.102,2.43,0.56,7.064,2.34,13.225c0,0,39.914-3.474,64.853-8.867
c10.922-2.363,16.738-8.671,12.856-13.046C389.146,359.632,324.585,378.209,309.674,366.315z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M280.368,374.22l-8.227,5.864
c-0.767,0.553-0.952,1.624-0.398,2.397c0.554,0.775,1.625,0.953,2.399,0.404l7.398-4.897c0.773-0.561,1.774-2.589,1.22-3.364
C282.207,373.852,281.135,373.672,280.368,374.22z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#333242" d="M302.61,369.571c0,0,3.666,3.858,5.094,10.113
c0,0,1.912,0.042,3.535-1.274c0,0-0.904-6.088-4.969-10.345C306.271,368.065,303.991,368.566,302.61,369.571z"/>
<path fill="#D0DDFD" d="M304.122,367.958c-1.982,0.72-3.481,1.607-3.345,1.981c0.143,0.382,1.857,0.108,3.845-0.605
c1.982-0.72,3.482-1.602,3.345-1.983C307.823,366.971,306.11,367.244,304.122,367.958z"/>
<g>
<g>
<g>
<g>
<linearGradient id="SVGID_36_" gradientUnits="userSpaceOnUse" x1="509.314" y1="478.5938" x2="509.314" y2="586.3754">
<stop offset="0" style="stop-color:#8AA8DA"/>
<stop offset="1" style="stop-color:#EFF6FF"/>
</linearGradient>
<path fill="url(#SVGID_36_)" d="M537.393,473.274h-61.579c-5.476,0-12.565,4.403-13.375,9.808l-17.559,127.862h6.785
l18.66-127.177c0.47-3.186,3.583-5.87,6.803-5.87h58.943c3.214,0,1.708,2.025,2.178,5.209l27.034,127.802l3.054-0.106
l5.41-0.633l-24.974-127.087C547.97,477.678,542.863,473.274,537.393,473.274z"/>
</g>
<g>
<path fill="#FFFFFF" d="M530.78,473.267h-60.252c-5.476,0-10.577,4.411-11.374,9.829l-18.672,127.17l4.577,0.673
l18.672-127.171c0.463-3.186,3.577-5.87,6.797-5.87h60.252c3.268,0,6.547,2.704,7.172,5.912l24.606,127.235l4.696-0.353
l-24.767-127.765C541.458,477.607,536.208,473.267,530.78,473.267z"/>
</g>
</g>
</g>
<g>
<g>
<g>
<linearGradient id="SVGID_37_" gradientUnits="userSpaceOnUse" x1="470.2964" y1="447.1738" x2="572.4268" y2="447.1738">
<stop offset="2.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#8AA8DA"/>
</linearGradient>
<path fill="url(#SVGID_37_)" d="M566.558,425.752c-0.982,7.655-2.464,19.22-4.488,29.272
c-3.398,16.855-6.143,18.04-6.261,18.083c-2.148-0.006-6.53-0.114-12.594-0.257c-15.874-0.38-35.075-1.013-70.604-1.013
h-2.314v4.626h2.314c35.474,0,54.634,0.631,70.496,1.013c6.095,0.143,10.494,0.249,12.786,0.249
c6.397,0,10.386-13.446,15.254-51.383c0.387-3.03,1.28-8.964,1.28-8.964l-4.56-0.757
C567.867,416.622,566.957,422.675,566.558,425.752z"/>
</g>
<g>
<path fill="#FFFFFF" d="M562.392,424.926c-0.982,7.589-2.465,19.045-4.494,29.022c-3.404,16.718-6.148,17.861-6.261,17.897
l-83.209-0.008v4.626h83.286c6.405,0,10.398-13.334,15.268-50.943c0.38-2.946,0.679-5.279,0.887-6.518l-4.565-0.762
C563.083,419.563,562.778,421.932,562.392,424.926z"/>
</g>
</g>
<g>
<g>
<path fill="#0D5BD9" d="M547.85,463.065H447.773c-4.387,0-7.94,3.561-7.94,7.946c0,4.381,3.553,7.935,7.94,7.935H547.85
c4.382,0,7.94-3.554,7.94-7.935C555.791,466.626,552.232,463.065,547.85,463.065z"/>
</g>
</g>
<g>
<g>
<path fill="#D0DDFD" d="M458.07,463.071h-64.305c-10.036,0-17.678,2.656-22.701,7.888c-3.863,4.028-4.988,8.487-5.048,10.493
l-0.119,4.261h13.671l0.274-3.189c0.566-2.132,4.083-5.577,13.922-5.577h64.305c3.827,0,6.94-3.103,6.94-6.941
C465.011,466.179,461.897,463.071,458.07,463.071z"/>
<path fill="#D0DDFD" d="M379.874,482.153c0.011-0.16,0.024-0.327,0.024-0.486c0,0.297-0.019,0.553-0.048,0.762
L379.874,482.153z"/>
</g>
</g>
<g>
<g>
<g>
<linearGradient id="SVGID_38_" gradientUnits="userSpaceOnUse" x1="456.4287" y1="447.8086" x2="476.1528" y2="447.8086">
<stop offset="2.500000e-007" style="stop-color:#EFF6FF"/>
<stop offset="1" style="stop-color:#8AA8DA"/>
</linearGradient>
<path fill="url(#SVGID_38_)" d="M471.213,418.902c-0.202,1.202-0.488,3.32-0.858,6.004
c-1.011,7.347-2.695,19.643-4.898,30.225c-3.666,17.643-6.416,19.137-6.714,19.249h-2.314l0.095,4.614h2.315
c6.481,0,10.689-13.989,16.094-53.455c0.363-2.65,0.655-4.739,0.839-5.876l0.381-2.278l-4.554-0.763L471.213,418.902z"/>
</g>
</g>
<g>
<path fill="#FFFFFF" d="M466.093,425.104c-0.975,7.653-2.464,19.224-4.493,29.284c-3.386,16.866-6.143,18.052-6.255,18.094
l0.083,4.612c6.398,0,10.386-13.451,15.254-51.401c0.387-3.036,0.696-5.435,0.905-6.69l-4.56-0.762
C466.802,419.586,466.493,422.021,466.093,425.104z"/>
</g>
</g>
<g>
<g>
<g>
<linearGradient id="SVGID_39_" gradientUnits="userSpaceOnUse" x1="420.7397" y1="478.5928" x2="420.7397" y2="586.3752">
<stop offset="0" style="stop-color:#8AA8DA"/>
<stop offset="1" style="stop-color:#EFF6FF"/>
</linearGradient>
<path fill="url(#SVGID_39_)" d="M447.042,468.863l-51.545,0.196c-5.47,0-12.755,4.207-13.564,9.619l-17.559,132.266h6.786
l18.654-131.581c0.47-3.185,3.595-5.869,6.803-5.869l49.104-1.174c3.214,0,1.708,3.197,2.185,6.381l18.135,132.207
l5.648-0.106l5.417-0.633l-18.684-131.49C457.618,473.267,452.512,468.863,447.042,468.863z"/>
</g>
<g>
<path fill="#FFFFFF" d="M440.435,468.869h-50.419c-5.482,0-10.565,4.405-11.339,9.832L359.97,610.277l4.583,0.655
l18.702-131.575c0.452-3.179,3.553-5.863,6.762-5.863h50.419c3.208,0,6.304,2.685,6.75,5.863l18.706,131.575l4.584-0.655
l-18.708-131.576C450.994,473.274,445.91,468.869,440.435,468.869z"/>
</g>
</g>
</g>
<path fill="#D0DDFD" d="M564.844,323.605h-75.138c-7.994,0-15.493,6.476-16.666,14.38c0,0-12.351,73.222-11.714,75.351
c1.143,3.853,2.577,6.333,6.214,6.333c3.631,0,97.387,0.936,97.387,0.936l0.601-3.965l11.083-74.81
c0.262-1.732,8.81-2.447,8.464-3.981C583.848,332.349,578.599,323.605,564.844,323.605z"/>
<path fill="#0D5BD9" d="M576.158,331.407h-78.441c-7.988,0-15.493,6.47-16.667,14.382l-11.082,74.816
c0,0,27.343,5.504,61.699,5.504c34.361,0,45.813-5.504,45.813-5.504l11.088-74.816
C589.74,337.876,584.151,331.407,576.158,331.407z"/>
</g>
</g>
</g>
<g>
<path fill="#42445D" d="M1208.97,165.792h-51.295c1.163,9.297-10.374,19.713-14.171,27.885
c-3.929,8.452-5.398,36.063,40.213,36.063c45.614,0,44.37-28.397,39.354-36.063C1218.13,186.142,1207.81,175.089,1208.97,165.792z
"/>
<path fill="#333242" d="M1221.059,190.785c1.173,6.953,0.346,15.713-6.618,20.214c-14.778,9.553-31.218,1.232-40.129-11.06
c-1.827-2.529-7.517,10.047-7.517,10.047s-11.476-25.313-0.923-44.193h-8.197c1.163,9.297-10.374,19.713-14.171,27.885
c-3.929,8.452-5.398,36.063,40.213,36.063c45.614,0,44.37-28.397,39.354-36.063
C1222.463,192.761,1221.784,191.791,1221.059,190.785z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFC3AB" d="M1177.139,460.062c-0.386,4.927-1.792,8.992-2.071,13.076
c-0.298,4.297,0.542,8.618,0.744,14.182c0.571,5.93-2.095,10.472-3.124,15.577c-5.22,26.039,0.31,41.962-5.399,61.812
c-1.863,6.483-3.827,8.755-4.798,11.553c-1.31,3.774-0.081,8.382-1.451,15.867c-1.763,9.698-6.495,19.512-4.88,24.935
c1.523,5.137,13.379,10.111,17.807,10.111c5.293,0,2.714-6.105,2.466-9.886c-0.398-5.976,1.743-39.973,3.73-47.431
c5.745-21.564,18.685-53.759,21.296-74.257c2.476-19.436,0.847-23.102,5.257-45.908c0.506-2.65,9.838-63.813,10.588-88.453
l-39.741,20.053C1178.483,405.094,1179.103,435.246,1177.139,460.062z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M1195.304,441.663c4.922,20.771,0.257,41.349-6.088,61.501
c-7.101,22.552-13.065,42.005-14.178,65.829c-0.869,18.333-10.446,36.753-11.101,55.039c3.72,1.893,7.81,3.142,10.028,3.142
c5.293,0,2.714-6.105,2.466-9.886c-0.398-5.981,1.743-39.973,3.73-47.431c5.745-21.564,18.69-53.759,21.296-74.257
c2.476-19.436,0.847-23.102,5.257-45.908c0.506-2.65,9.838-63.813,10.588-88.453l-27.158,13.7
C1194.154,397.106,1190.108,419.736,1195.304,441.663z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#0A429F" d="M1176.454,611.234c-0.851,4.065-8.928,6.25-12.826,0.906
c-2.553-3.501-3.549-8.113-4.249-12.1c-0.03-0.174-0.089-0.329-0.126-0.503c-1.988,7.037-4.296,13.488-3.094,17.524
c1.523,5.137,13.379,10.111,17.807,10.111c5.293,0,2.714-6.105,2.466-9.886C1176.354,616.158,1176.371,614.008,1176.454,611.234z"
/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#0D5BD9" d="M1165.045,614.604c-0.113-0.411-0.155-0.809-0.172-1.19
c-0.447-0.364-0.87-0.762-1.245-1.273c-2.553-3.501-3.549-8.113-4.249-12.1c-0.03-0.174-0.089-0.329-0.126-0.503
c-1.988,7.037-4.296,13.488-3.094,17.524c1.523,5.137,13.379,10.111,17.807,10.111c2.335,0,3.096-1.22,3.244-2.868
C1175.329,624.627,1167.253,622.408,1165.045,614.604z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M1214.524,227.14c-4.258-1.012-12.519-3.399-17.56-5.351
c-8.731-3.387-7.196-11.053-5.195-21.867l-16.124-5.679c-1.543,11.511,1.119,24.653-10.745,21.404
c-14.14-3.887-20.896-1.239-25.325,17.314l65.48,30.814c0,12.838,5.164,24.819,8.219,35.396l13.725-5.464
C1225.476,278.976,1222.291,228.985,1214.524,227.14z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M1115.815,281.69l10.999,10.351
c7.278-9.184,27.303-54.967,27.303-54.967l-18.69-7.821C1126.047,245.085,1119.286,273.208,1115.815,281.69z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFC3AB" d="M1144.82,233.937c-1.816,6.482-14.422,2.595-17.011,11.767
c-0.982,3.494,2.637,10.291,3.915,13.261c0.649,1.518,1.786,14.916-2.904,23.725c-0.969,1.809-6.786,2.803-8.125,3.595
l6.119,5.756c7.278-9.184,27.303-54.967,27.303-54.967l-9.174-3.839C1144.891,233.473,1144.885,233.693,1144.82,233.937z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M1115.584,278.523c-17.173,4.863-53.443,15.761-57.336,12.523
c-4.16-3.47-8.393-4.839-13.172-5.106c-4.399-0.238,0.118,3.667-5.131,4.071c-3.107,0.232-12.237-0.107-12.589,1.077
c-0.703,2.423,2.076,2.602,5.279,2.625c-0.661,1.393,0.125,3.363,2.126,3.41c-0.215,1.958,1.25,3.453,3.105,3.553
c-0.048,2.631,1.821,3.524,5.251,3.149c3.66-0.406,9.494,0.166,19.41-0.732c12.992-1.173,46.293,2.988,64.031-10.713
C1130.221,289.558,1121.471,276.851,1115.584,278.523z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFC3AB" d="M1115.572,288.017c-8.429,2.661-16.53,6.184-25.279,6.827
c-8.809,0.656-21.499,4.423-30.331,4.953c-2.821,0.172-6.678-2.87-10.028-5.75c-2.078-1.785-4.548-3.042-7.231-3.583
c-1.197-0.244-2.096-0.506-2.757-0.458c-3.107,0.238-12.243-0.101-12.589,1.083c-0.703,2.423,2.076,2.602,5.279,2.625
c-0.661,1.393,0.125,3.363,2.126,3.41c-0.215,1.958,1.25,3.453,3.105,3.553c-0.048,2.631,1.821,3.524,5.251,3.149
c2.185-0.244,15.409-0.37,19.41-0.732c12.992-1.173,46.293,2.988,64.031-10.713c2.856-2.203,0.553-5.78-1.174-7.678
C1122.964,285.119,1116.561,287.701,1115.572,288.017z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M1035.423,281.922c0.255,2.554,2.374,4.238,5.903,4.304
c1.934,1.976,3.768,3.261,5.636,3.547l6.322-2.006l-9.458-4.344C1041.963,283.279,1039.845,283.196,1035.423,281.922z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFC3AB" d="M1164.9,215.647c-7.796-2.143-13.343-2.28-17.498,1.124
c3.339-1.041,6.982-1.327,10.071-0.951c4.749,0.583,8.505,5.321,12.631,5.827c7.617,0.934,16.26-9.208,20.617-15.755
c0.286-1.87,0.66-3.857,1.048-5.97l-16.124-5.679C1174.103,205.749,1176.765,218.896,1164.9,215.647z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFC3AB" d="M1212.066,265.375c-0.446,0.75-4.846,5.155-6.869,5.887
c0.344,9.898,5.631,19.433,8.077,27.909l5.268-1.107c-1.899-7.315-5.833-16.749-6.055-24.719
C1212.416,270.596,1212.245,267.959,1212.066,265.375z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M1187.62,151.133c-5.882-0.845-10.421-0.048-13.922,1.856
c-7.267,3.946-9.897,12.78-9.85,22.434c0,0.369,0,0.745,0.023,1.113c0,0.351,0.03,0.696,0.03,1.042
c0.022,0.471,0.022,0.946,0.071,1.44c0.148,2.113,0.327,3.994,0.523,5.731c0.493,3.947,1.166,6.994,2.256,9.577
c1.367,3.298,10.446,15.106,17.636,14.879c6.607-0.219,15.511-11.379,16.95-13.963c1.71-3.125,2.524-6.422,2.946-9.976
c0.323-2.529,0.43-5.184,0.549-8.012v-0.101c0.023-0.643,0.054-1.333,0.054-1.982
C1204.905,163.834,1200.989,153.02,1187.62,151.133z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M1202.012,584.993c-0.969-2.798-3.195-2.22-5.053-8.702
c-5.714-19.845,0.071-38.616-5.148-64.662c-1.023-5.108-3.696-9.648-3.124-15.57c0.208-5.578,1.04-9.899,0.744-14.186
c-0.287-4.088-1.686-8.146-2.072-13.082c-1.256-15.867-1.451-22.152-1.197-45.204c0.394-34.82,3.18-51.343-9.476-77.424
l-26.378,0.095l-3.112,23.719c0.826,26.974,5.435,54.919,11.325,85.454c4.404,22.809,3.125,31.825,5.602,51.265
c2.606,20.498,23.612,78.357,24.242,86.245c0.168,2.135,0.625,29.427,1.048,33.104c0.44,3.755-0.006,12.784,5.118,12.784
c4.435,0,12.709-9.576,13.809-13.027c1.727-5.394-3.113-15.244-4.88-24.934C1202.095,593.372,1203.317,588.766,1202.012,584.993z"
/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#0A429F" d="M1193.496,625.829c-1.816,0-3.066-1.992-4.28-3.089
c0.065,1.535,0.131,2.726,0.196,3.304c0.44,3.755-0.006,12.784,5.118,12.784c4.435,0,12.709-9.576,13.809-13.027
c1.27-3.964-0.999-10.328-2.999-17.268C1205.03,609.819,1202.619,625.829,1193.496,625.829z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#0D5BD9" d="M1196.506,628.396c-0.184-1.186-0.189-2.226-0.077-3.197
c-0.893,0.394-1.861,0.631-2.933,0.631c-1.816,0-3.066-1.992-4.28-3.089c0.065,1.535,0.131,2.726,0.196,3.304
c0.44,3.755-0.006,12.784,5.118,12.784c2.894,0,7.399-4.071,10.505-7.856c-0.791,0.376-1.601,0.69-2.404,0.897
C1200.262,632.494,1196.917,631.086,1196.506,628.396z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#C3391C" d="M1138.069,318.432c-0.171,1.113-2.439,20.105-2.553,21.146
c-3.916,34.784,9.249,82.739,18.808,128.73c23.623,7.887,57.021-1.367,57.021-1.367s14.971-71.032,14.971-106.435
c0-24.271-13.728-38.67-15.053-46.318C1193.805,324.271,1145.974,320.461,1138.069,318.432z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FD4B1B" d="M1173.55,444.222c-2.512-9.076-7.29-35.623-6.439-45.004
c1.827-20.188-26.285-20.076-16.874-28.735c4.369-4.018,21.873-5.256,24.784-11.833c5.541-12.488-14.846-14.494-21.719-37.986
c-0.061-0.184-15.166-1.66-15.286-1.805c-0.404,3.049-2.392,19.745-2.499,20.719c-3.916,34.784,9.249,82.739,18.808,128.73
c17.923,5.981,41.462,2.102,51.783-0.123C1197.19,457.143,1177.405,458.173,1173.55,444.222z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#C3391C" d="M1203.875,223.444l-20.158,6.297c0,0-10.184-8.458-17.195-14.797
c0,0-17.529-10.445-35.213,12.321c-2.006,2.583,9.988,7.197,8.464,20.309c-2.565,22.095-8.405,64.205-2.458,71.258
c5.618,6.666,72.68,9.017,74.602-2.352c1.125-6.672-4.886-10.094-6.744-17.671c-1.313-5.393-0.82-11.321,0.841-21.344
c4.345-3.554,12.529-8.232,8.225-19.904c-3.136-8.487,12.957-8.225,12.143-14.546
C1223.952,224.152,1203.875,223.444,1203.875,223.444z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#C3391C" d="M1178.745,265.406c-5.837-3.227-7.243-7.006-9.159-12.44
c-1.655-4.714-7.213-0.904-12.279,2.893c-4.041,3.023-8.332-4.303-10.601-2.315c-2.647,2.315,4.088,7.911,3.089,11.934
c-1.542,6.226,3.173,8.416,8.535,4.917c3.084-2.018,15.167,5.16,22.208,3.97C1186.847,273.298,1187.007,269.965,1178.745,265.406z
"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FD4B1B" d="M1183.287,231.752c-6.607-0.898-14.171,0.679-20.7,4.887
c-6.173,3.975-21.29-2.178-22.814,10.934c-2.565,22.095-8.405,64.205-2.458,71.258c4.409,5.231,46.64,7.804,65.556,3.172
c-3.811-1.655-10.298-3.088-14.394-3.144c-16.908-0.226-26.206-7.535-35.563-14.676c-5.029-3.833-1.618-7.494,3.482-3.602
c5.631,4.298,22.142,11.208,22.142,4.244c0-16.416,20.588-25.1,20.588-32.308c0-9.219-5.84-19.552,1.25-23.498
c4.529-2.523-4.19-6.672-4.846-7.214c-9.154-7.428,5.839-11.112,11.617-11.613c3.175-0.28,5.098-1.916,4.555-3.197
c-1.374-3.237-8.583-2.904-14.063-0.065C1192.877,229.402,1186.591,232.199,1183.287,231.752z M1180.538,274.815
c-7.041,1.19-19.124-5.982-22.208-3.963c-5.362,3.499-10.077,1.309-8.535-4.923c0.999-4.018-5.736-9.612-3.089-11.928
c2.269-1.988,6.56,5.339,10.601,2.316c5.066-3.798,10.624-7.607,12.279-2.893c1.916,5.434,3.322,9.214,9.159,12.434
C1187.007,270.423,1186.847,273.75,1180.538,274.815z"/>
<g>
<g>
<g>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFC3AB" d="M1184.294,191.696c-1.911,0.06-3.738,0.893-3.875,1.231
c-0.315,0.816,0.94,1.06,1.654,1.09c0.279,0.006,0.82,0.071,1.196,0.142c0.606,0.125,1.237,0.102,1.839-0.059
c0.363-0.102,0.904-0.209,1.179-0.238c0.714-0.071,2.12-0.505,1.578-1.19C1187.495,192.213,1186.08,191.643,1184.294,191.696z"
/>
</g>
</g>
</g>
<path fill="#FFC3AB" d="M1187.62,148.604c-5.882-0.84-10.421-0.048-13.922,1.862c-7.267,3.946-9.897,12.78-9.85,22.434
c1.244-3.827,3.451-8.517,7.321-11.636c0,0,6.451,6.197,14.91,9.547c0,0-5.239-7.911-6.228-11.137
c0.595,0.369,9.899,6.523,24.433,23.07c0.323-2.553,0.43-5.255,0.549-8.112C1205.334,162.597,1201.757,150.591,1187.62,148.604z"
/>
<path fill="#42445D" d="M1184.425,138.818c-12.173,0-16.714,10.178-16.714,10.178s-8.625,1.726-10.101,9.624
c-1.256,6.809,1.411,13.755,6.375,19.046c0,0,1.256-11.928,8.761-17.969c0,0,6.434,6.196,14.898,9.559
c0,0-5.272-7.976-6.25-11.166c0,0,10.375,6.553,26.641,25.629c-1.035-8.333,0.935-12.357,0.935-21.803
C1208.97,151.133,1199.656,138.818,1184.425,138.818z"/>
<path fill="#333242" d="M1177.336,155.174c1.958,6.094,6.881,12.714,10.309,14.083c0,0-5.272-7.976-6.25-11.166
c0,0,10.375,6.553,26.641,25.629C1208.019,183.547,1195.834,155.174,1177.336,155.174z"/>
<path fill="#333242" d="M1158.885,155.174c-0.565,0.994-1.024,2.131-1.274,3.446c-1.256,6.809,1.411,13.755,6.375,19.046
c0,0,0.326-3.066,1.613-6.869C1158.64,168.971,1156.402,160.996,1158.885,155.174z"/>
<path fill="#FFC3AB" d="M1195.804,186.981c-4.244,0.149-7.784-2.88-7.938-6.696c-0.103-3.202,2.154-4.637,7.547-4.815
c1.142-0.042,2.124,0,3,0.096c-0.293-0.316-0.536-0.656-0.781-0.995c-0.762-0.053-1.534-0.077-2.249-0.042
c-2.856,0.102-6.423,0.566-7.839,3.024l0.029-0.078c-0.326,0.452-1.47,0.726-1.768,0.726c-0.274,0.018-1.416,0.047-2.077,0.071
c-0.697,0.029-1.839,0.071-2.111,0.071c-0.275,0-1.442-0.173-1.816-0.619l0.03,0.102c-1.56-2.357-5.137-2.578-8.019-2.482
c-1.606,0.047-3.44,0.25-5.011,0.846c0.054-0.024,0.078-0.049,0.131-0.078c-0.846,0.202-2.144,0.346-3.06,0.423
c0,0.351,0.03,0.696,0.03,1.042c0.022,0.471,0.022,0.946,0.071,1.44c0.148,2.113,0.327,3.994,0.523,5.731
c1.536,2.482,4.464,4.119,7.786,3.994c4.564-0.149,8.189-3.571,8.337-7.69l0.024,0.125c0.517-1.167,2.207-1.565,3.131-1.589
c0.887-0.024,2.601,0.226,3.196,1.363l0.029-0.125c0.44,4.096,4.263,7.244,8.853,7.101c3.968-0.155,7.218-2.755,8.116-6.153
c0,0.071,0,0.148,0,0.148c0.025-0.071,0.042-0.155,0.062-0.232c-0.305-0.339-0.572-0.708-0.829-1.083
C1202.84,184.06,1199.716,186.845,1195.804,186.981z M1172.258,187.803c-4.238,0.143-7.814-2.857-7.935-6.702
c-0.123-3.197,2.132-4.613,7.542-4.815c5.387-0.191,7.738,1.095,7.839,4.268C1179.853,184.398,1176.502,187.649,1172.258,187.803z
"/>
<g>
<g>
<path fill="#FFFFFF" d="M1196.107,173.786c-3.713,0.131-8.63,0.869-8.451,5.791c0.147,4.364,4.154,7.78,8.923,7.613
c4.773-0.166,8.529-3.851,8.373-8.22C1204.779,174.054,1199.821,173.655,1196.107,173.786z M1196.543,186.238
c-4.244,0.148-7.804-2.851-7.946-6.695c-0.106-3.179,2.148-4.619,7.547-4.804c5.394-0.191,7.743,1.083,7.857,4.268
C1204.138,182.845,1200.786,186.095,1196.543,186.238z"/>
</g>
<path fill="#FFFFFF" d="M1205.024,174.406c-0.637,0.023-2.815,0.035-4.035-0.215c0,0,1.452,0.578,2.719,2.089
c0.995,1.19,0.981,4.898,0.981,4.898c0.482-1.273,0.536-3.012,0.514-3.745c-0.025-0.726,0.137-0.898,0.469-0.945
c0.335-0.037,0.365-0.208,0.357-0.394c-0.011-0.184-0.04-1.083-0.053-1.375C1205.971,174.429,1205.655,174.382,1205.024,174.406z
"/>
<g>
<path fill="#FFFFFF" d="M1172.551,174.608c-3.716,0.131-8.632,0.869-8.459,5.791c0.156,4.369,4.154,7.78,8.923,7.613
c4.772-0.167,8.528-3.851,8.38-8.22C1181.217,174.876,1176.265,174.477,1172.551,174.608z M1172.983,187.059
c-4.244,0.155-7.802-2.85-7.938-6.695c-0.108-3.179,2.144-4.619,7.54-4.81c5.393-0.184,7.744,1.089,7.856,4.274
C1180.573,183.666,1177.233,186.916,1172.983,187.059z"/>
</g>
<path fill="#FFFFFF" d="M1162.766,176.227c0.012,0.291,0.048,1.197,0.053,1.381c0.012,0.184,0.054,0.357,0.381,0.37
c0.329,0.011,0.513,0.178,0.535,0.904c0.031,0.727,0.203,2.465,0.775,3.697c0,0-0.275-3.691,0.637-4.953
c1.16-1.601,2.564-2.273,2.564-2.273c-1.197,0.339-3.374,0.476-4.013,0.494C1163.067,175.869,1162.759,175.935,1162.766,176.227z
"/>
<path fill="#FFFFFF" d="M1184.448,177.542c-0.685,0.023-1.822,0.065-2.101,0.071c-0.28,0.018-1.446-0.171-1.804-0.601
l0.845,3.435c0.518-1.172,2.197-1.56,3.106-1.589c0.898-0.036,2.608,0.232,3.214,1.368l0.59-3.487
c-0.315,0.458-1.471,0.72-1.75,0.732C1186.27,177.477,1185.126,177.524,1184.448,177.542z"/>
</g>
<g>
<g>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M1212.362,296.303c-16.754,2.911-28.735,10.534-37.688,11.017
c-2.095,0.113-4.123,0.809-6.04-0.637c-4.071-3.066-8.375-2.905-12.862-2.75c-4.148,0.149,0.41,3.417-4.464,4.232
c-2.882,0.488-11.458,0.935-11.68,2.077c-0.451,2.321,2.162,2.25,5.156,2.006c-0.5,1.357,0.399,3.136,2.274,3.012
c-0.03,1.85,1.47,3.119,3.2,3.058c0.179,2.466,2,3.149,5.179,2.505c3.387-0.684,8.894-0.642,18.096-2.314
c12.053-2.19,14.475-0.566,23.235-1.327c8.607-0.756,21.773-1.763,28.944-6.929c2.548-1.839,2.548-9.909,1.144-17.897
C1221.137,293.552,1218.023,295.32,1212.362,296.303z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M1145.027,300.148c0.465,2.356,2.589,3.761,5.893,3.523
c1.18,1.112,1.976,2.393,2.798,3.036l8.655-2.607l-9.347-3.262C1151.266,300.868,1149.284,300.962,1145.027,300.148z"/>
</g>
</g>
<g>
<g>
<g>
<path fill="#42445D" d="M1153.908,305.861c0,0.006,0,0.012,0,0.019c0,1.755,1.44,3.202,3.202,3.202h75.31
c1.757,0,3.198-1.446,3.198-3.202c0-0.007,0-0.013,0-0.019H1153.908z"/>
</g>
</g>
<path fill="#42445D" d="M1145.778,239.461c-0.709-2.589-3.095-4.363-5.779-4.292l-46.206-0.023v73.132l63.807,0.804
c3.909,0,4.143-3.023,3.88-4.071L1145.778,239.461z"/>
<path fill="#FFFFFF" d="M1142.463,236.508c-0.227-0.809-0.971-1.375-1.816-1.375h-81.559c-1.244,0-2.15,1.179-1.816,2.375
l15.304,64.782c1.113,4.011,4.76,6.791,8.92,6.791h75.954c1.238,0,2.143-1.185,1.804-2.381L1142.463,236.508z"/>
</g>
<g>
<g>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M1037.172,291.005c-3.602-0.286-4.458-0.297-8.055-0.292
c-1.421,0-2.248,0.69-2.142,1.393c0.096,0.678,0.459,1.38,2.22,1.44c3.131,0.102,5.346-0.029,8.41-0.363
C1039.969,292.927,1040.576,291.279,1037.172,291.005z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M1043.885,293.719c-3.602-0.036-6.897,0.333-10.474,0.31
c-1.418-0.006-1.578,0.738-1.429,1.482c0.147,0.727,0.553,1.458,2.321,1.381c3.123-0.125,7.087-0.524,10.123-1.125
C1046.761,295.314,1047.297,293.749,1043.885,293.719z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M1044.927,296.773c-3.227,0.113-5.97,0.607-9.178,0.731
c-1.274,0.054-1.387,0.965-1.238,1.696c0.143,0.721,0.519,1.429,2.101,1.286c2.798-0.262,6.339-0.822,9.048-1.536
C1047.735,298.397,1047.975,296.666,1044.927,296.773z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFCAB8" d="M1046.605,300.458c-3.231,0.106-4.827,0.273-8.03,0.398
c-1.271,0.048-1.397,0.797-1.25,1.536c0.138,0.714,0.52,1.423,2.09,1.28c2.805-0.256,4.994-0.47,7.703-1.191
C1049.194,301.927,1049.652,300.35,1046.605,300.458z"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 80 KiB

View File

@@ -0,0 +1,479 @@
<svg version="1.1" id="Layer_1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="960px" height="560px" viewBox="0 0 960 560" enable-background="new 0 0 960 560" xml:space="preserve">
<g>
<g>
<path fill="#74CB96" d="M417.069,141.864c-31.037,0-56.28-25.248-56.28-56.282c0-31.036,25.243-56.283,56.28-56.283
c31.034,0,56.277,25.248,56.277,56.283C473.346,116.616,448.103,141.864,417.069,141.864z M417.069,58.491
c-14.94,0-27.095,12.153-27.095,27.092c0,14.937,12.155,27.091,27.095,27.091c14.938,0,27.089-12.154,27.089-27.091
C444.158,70.644,432.007,58.491,417.069,58.491z"/>
<g>
<path fill="#74CB96" d="M433.467,43.896h-30.95V14.414c0-2.284,1.852-4.137,4.14-4.137h22.674c2.284,0,4.136,1.853,4.136,4.137
V43.896z"/>
<path fill="#74CB96" d="M429.331,160.888h-22.674c-2.288,0-4.14-1.852-4.14-4.138v-29.481h30.95v29.481
C433.467,159.036,431.615,160.888,429.331,160.888z"/>
</g>
<g>
<path fill="#74CB96" d="M376.306,70.108v30.949h-29.482c-2.284,0-4.136-1.852-4.136-4.138V74.244
c0-2.284,1.852-4.136,4.136-4.136H376.306z"/>
<path fill="#74CB96" d="M493.297,74.244v22.675c0,2.286-1.852,4.138-4.136,4.138h-29.483V70.108h29.483
C491.445,70.108,493.297,71.96,493.297,74.244z"/>
</g>
<g>
<path fill="#74CB96" d="M399.459,45.163l-21.884,21.886l-20.847-20.847c-1.617-1.617-1.617-4.236,0-5.852l16.031-16.033
c1.617-1.617,4.236-1.617,5.853,0L399.459,45.163z"/>
<path fill="#74CB96" d="M479.259,130.814l-16.033,16.033c-1.618,1.616-4.237,1.616-5.851,0l-20.847-20.846l21.884-21.885
l20.847,20.847C480.873,126.579,480.873,129.199,479.259,130.814z"/>
</g>
<g>
<path fill="#74CB96" d="M458.412,67.048l-21.884-21.886l20.847-20.846c1.614-1.617,4.233-1.617,5.851,0l16.033,16.033
c1.614,1.615,1.614,4.235,0,5.852L458.412,67.048z"/>
<path fill="#74CB96" d="M372.759,146.848l-16.031-16.033c-1.617-1.615-1.617-4.235,0-5.851l20.847-20.847l21.884,21.885
l-20.847,20.846C376.995,148.464,374.376,148.464,372.759,146.848z"/>
</g>
</g>
<g>
<g>
<path fill="none" stroke="#D7B4B4" stroke-width="0.4707" stroke-miterlimit="10" d="M721.482,455.688H201.631
c-6.876,0-12.451-5.574-12.451-12.449V122.609c0-6.876,5.574-12.451,12.451-12.451h519.852c6.878,0,12.452,5.575,12.452,12.451
v320.629C733.935,450.113,728.36,455.688,721.482,455.688z"/>
<path fill="#F8E7E2" d="M751.569,429.576H231.718c-6.877,0-12.452-5.575-12.452-12.452V96.498
c0-6.878,5.575-12.452,12.452-12.452h519.851c6.879,0,12.453,5.574,12.453,12.452v320.626
C764.022,424.001,758.448,429.576,751.569,429.576z"/>
</g>
<g>
<g>
<path fill="none" stroke="#D7B4B4" stroke-width="0.4862" stroke-miterlimit="10" d="M438.574,367.371H287.206
c-3.331,0-6.028-2.698-6.028-6.029V137.52c0-3.329,2.697-6.027,6.028-6.027h151.369c3.331,0,6.029,2.698,6.029,6.027v223.822
C444.603,364.673,441.905,367.371,438.574,367.371z"/>
<path fill="none" stroke="#FFFFFF" stroke-width="0.4599" stroke-miterlimit="10" d="M412.275,337.232H306.899
c-3.224,0-5.837-2.613-5.837-5.838v-84.189c0-3.223,2.613-5.836,5.837-5.836h105.375c3.221,0,5.835,2.613,5.835,5.836v84.189
C418.11,334.619,415.496,337.232,412.275,337.232z"/>
</g>
<g>
<circle fill="#3C6BE2" cx="262.387" cy="105.107" r="6.892"/>
<circle fill="#E17246" cx="285.312" cy="105.107" r="6.892"/>
<path fill="none" stroke="#D7B4B4" stroke-width="0.3225" stroke-miterlimit="10" d="M315.128,105.107
c0,3.806-3.087,6.891-6.894,6.891c-3.804,0-6.891-3.084-6.891-6.891c0-3.807,3.087-6.892,6.891-6.892
C312.042,98.215,315.128,101.3,315.128,105.107z"/>
</g>
<path fill="none" stroke="#FFFFFF" stroke-width="0.4599" stroke-miterlimit="10" d="M745.742,280.273v62.786
c0,4.333-3.514,7.845-7.847,7.845H585.023c-4.334,0-7.847-3.512-7.847-7.845v-62.786c0-4.335,3.513-7.85,7.847-7.85h152.872
C742.229,272.423,745.742,275.938,745.742,280.273z"/>
<g>
<path fill="none" stroke="#D7B4B4" stroke-width="0.4707" stroke-miterlimit="10" d="M602.786,180.36H487.61
c-9.338,0-16.909-7.569-16.909-16.906l0,0c0-9.338,7.57-16.907,16.909-16.907h115.176c9.335,0,16.905,7.569,16.905,16.907l0,0
C619.691,172.792,612.121,180.36,602.786,180.36z"/>
<path fill="none" stroke="#FFFFFF" stroke-width="0.4599" stroke-miterlimit="10" d="M515.081,163.454
c0,2.917-2.362,5.283-5.283,5.283c-2.917,0-5.283-2.366-5.283-5.283c0-2.917,2.366-5.283,5.283-5.283
C512.719,158.171,515.081,160.537,515.081,163.454z"/>
<circle fill="none" stroke="#FFFFFF" stroke-width="0.4599" stroke-miterlimit="10" cx="546.077" cy="163.454" r="5.283"/>
<circle fill="none" stroke="#FFFFFF" stroke-width="0.4599" stroke-miterlimit="10" cx="579.539" cy="163.454" r="5.283"/>
</g>
</g>
</g>
<g>
<g>
<path fill="#3C6BE2" d="M384.465,202.967H169.533c-3.108,0-5.629-2.521-5.629-5.629v-45.662c0-3.108,2.521-5.628,5.629-5.628
h214.932c3.108,0,5.628,2.52,5.628,5.628v45.662C390.093,200.446,387.574,202.967,384.465,202.967z"/>
<g>
<line fill="none" stroke="#FFFFFF" stroke-width="0.4539" stroke-miterlimit="10" x1="185.501" y1="167.681" x2="300.614" y2="167.681"/>
<line fill="none" stroke="#FFFFFF" stroke-width="0.4539" stroke-miterlimit="10" x1="185.501" y1="181.332" x2="241.297" y2="181.332"/>
</g>
</g>
<path fill="#ECC341" d="M816.451,312.979v62.785c0,4.337-3.513,7.85-7.846,7.85H632.457c-4.336,0-7.85-3.513-7.85-7.85v-62.785
c0-4.333,3.514-7.847,7.85-7.847h176.148C812.938,305.133,816.451,308.646,816.451,312.979z"/>
<g>
<path fill="#74CB96" d="M779.833,200.692H646.414c-4.334,0-7.847-3.514-7.847-7.848V44.799c0-4.335,3.513-7.849,7.847-7.849
h133.419c4.334,0,7.847,3.514,7.847,7.849v148.045C787.68,197.178,784.167,200.692,779.833,200.692z"/>
<g>
<circle fill="#3C6BE2" cx="774.789" cy="43.855" r="24.974"/>
<g>
<g>
<path fill="#F9FBFC" d="M772.225,40.204l-8.472,3.105l8.472,3.079v3.182l-12.109-4.606v-3.309l12.109-4.604V40.204z"/>
</g>
<g>
<path fill="#F9FBFC" d="M777.521,37.05l12.11,4.604v3.309l-12.11,4.606v-3.182l8.473-3.079l-8.473-3.105V37.05z"/>
</g>
</g>
</g>
<g>
<line fill="none" stroke="#FFFFFF" stroke-width="0.4454" stroke-miterlimit="10" x1="661.288" y1="82.637" x2="763.038" y2="82.637"/>
<line fill="none" stroke="#FFFFFF" stroke-width="0.4454" stroke-miterlimit="10" x1="661.288" y1="99.212" x2="715.018" y2="99.212"/>
<line fill="none" stroke="#FFFFFF" stroke-width="0.4454" stroke-miterlimit="10" x1="683.855" y1="118.272" x2="734.063" y2="118.272"/>
<line fill="none" stroke="#FFFFFF" stroke-width="0.4454" stroke-miterlimit="10" x1="661.288" y1="134.845" x2="763.038" y2="134.845"/>
<line fill="none" stroke="#FFFFFF" stroke-width="0.4454" stroke-miterlimit="10" x1="661.288" y1="153.906" x2="691.898" y2="153.906"/>
<line fill="none" stroke="#FFFFFF" stroke-width="0.4454" stroke-miterlimit="10" x1="699.714" y1="153.906" x2="763.038" y2="153.906"/>
<line fill="none" stroke="#FFFFFF" stroke-width="0.4454" stroke-miterlimit="10" x1="661.288" y1="118.272" x2="674.988" y2="118.272"/>
</g>
</g>
</g>
<g>
<path fill="none" stroke="#D7B4B4" stroke-width="0.5037" stroke-miterlimit="10" d="M168.905,27.054h-41.651
c-2.134,0-3.862,1.753-3.862,3.917v23.425c0,2.162,1.729,3.916,3.862,3.916h16.972l14.27,15.919v-15.34l10.486-0.213
c2.103-0.042,3.785-1.783,3.785-3.916V30.971C172.767,28.808,171.039,27.054,168.905,27.054z"/>
<ellipse fill="none" stroke="#D7B4B4" stroke-width="0.5037" stroke-miterlimit="10" cx="107.335" cy="354.671" rx="10.429" ry="10.574"/>
<ellipse fill="none" stroke="#D7B4B4" stroke-width="0.5037" stroke-miterlimit="10" cx="856.365" cy="241.84" rx="7.599" ry="7.706"/>
<rect x="557.671" y="5.955" fill="none" stroke="#D7B4B4" stroke-width="0.5037" stroke-miterlimit="10" width="15.773" height="15.995"/>
</g>
</g>
<g>
<g>
<g>
<g>
<rect x="499.009" y="498.439" fill="#E3A6A9" width="15.191" height="43.198"/>
<g>
<g>
<defs>
<path id="XMLID_5_" d="M499.009,538.893h19.632l14.345,6.844c3.243,1.668,5.283,5.008,5.283,8.654l0,0h-39.26V538.893z"/>
</defs>
<use xlink:href="#XMLID_5_" overflow="visible" fill="#262127"/>
<clipPath id="XMLID_2_">
<use xlink:href="#XMLID_5_" overflow="visible"/>
</clipPath>
</g>
<path fill="#262127" d="M520.239,539.63l-4.419-5.985c0,0-6.912-1.263-6.311,6.255L520.239,539.63z"/>
</g>
</g>
<path fill="#E17246" d="M493.2,361.946l23.454-13.509c0,0,10.402,14.451,10.402,41.666c0,27.214,1.129,117.373,1.129,117.373
h-32.852L493.2,361.946"/>
</g>
<g>
<g>
<rect x="474.192" y="498.439" fill="#E3A6A9" width="15.188" height="43.198"/>
<g>
<g>
<defs>
<path id="XMLID_7_" d="M489.38,538.893h-19.628l-14.348,6.844c-3.243,1.668-5.283,5.008-5.283,8.654l0,0h39.259V538.893z"/>
</defs>
<use xlink:href="#XMLID_7_" overflow="visible" fill="#262127"/>
<clipPath id="XMLID_3_">
<use xlink:href="#XMLID_7_" overflow="visible"/>
</clipPath>
</g>
<path fill="#262127" d="M468.151,539.63l4.418-5.985c0,0,6.915-1.263,6.311,6.255L468.151,539.63z"/>
</g>
</g>
<g>
<path fill="#E17246" d="M494.062,361.818l-22.354-13.381c0,0-7.104,13.91-7.104,41.125c0,27.213-0.652,117.914-0.652,117.914
h29.072L494.062,361.818"/>
<polygon fill="#CF5E38" points="493.61,376.761 493.61,376.761 487.347,376.761 493.503,446.988 "/>
</g>
</g>
<rect x="471.708" y="348.438" fill="#E17246" width="44.947" height="24.821"/>
</g>
<g>
<g>
<path fill="#262127" d="M495.318,278.649c0,0-12.402-0.779-21.145,10.65c-7.775,10.165-2.466,59.138-2.466,59.138h44.947
l0.647-57.893C517.302,290.545,507.89,279.406,495.318,278.649z"/>
<polygon fill="#1E1A1A" points="506.648,308.439 514.426,320.669 503.961,318.688 "/>
<polygon fill="#1E1A1A" points="516.654,341.816 516.654,348.438 481.869,340.557 487.54,329.127 516.544,335.992 "/>
</g>
<g>
<circle fill="#ECC341" cx="453.762" cy="319.808" r="38.589"/>
<g>
<path fill="#E3A6A9" d="M421.531,296.626c-0.99,0-1.955,0.279-2.773,0.84c-1.404,0.962-3.272,2.836-3.466,6.066
c-0.313,5.235,1.153,7.138,5.023,8.288l2.617-15.194H421.531z"/>
<g>
<path fill="#E3A6A9" d="M422.932,296.626h6.339c0.777,0,1.407,0.63,1.407,1.406v0.411c0,0.699-0.514,1.291-1.206,1.392
l-9.68,1.396L422.932,296.626z"/>
<path fill="#E3A6A9" d="M420.628,300.004l7.508,3.281c0.711,0.31,1.034,1.14,0.727,1.852l-0.028,0.059
c-0.267,0.618-0.931,0.957-1.585,0.815l-7.85-1.695L420.628,300.004z"/>
<path fill="#E3A6A9" d="M420.369,304.287l5.788,2.654c0.674,0.308,0.993,1.091,0.727,1.783l-0.009,0.021
c-0.276,0.724-1.084,1.088-1.808,0.814l-6.706-2.271L420.369,304.287z"/>
<path fill="#E3A6A9" d="M420.315,311.82l2.842,0.689c0.712,0.172,1.435-0.229,1.667-0.921l0,0
c0.232-0.692-0.106-1.451-0.78-1.739l-5.073-2.701L420.315,311.82z"/>
</g>
</g>
</g>
<g>
<path fill="#262127" d="M517.302,290.545c0,0,6.516,7.234,23.64,38.337c1.526,2.773,1.761,6.101,0.352,8.934l0,0
c-3.181,6.393-12.084,6.963-16.054,1.024c-5.537-8.278-18.625-30.128-18.591-30.4
C506.712,307.938,517.302,290.545,517.302,290.545z"/>
<g>
<g>
<g>
<path fill="#E3A6A9" d="M490.784,322.885l-2.166,10.798l-14.444-1.344c0,0,4.148-14.722,4.252-14.512
C478.526,318.041,490.784,322.885,490.784,322.885z"/>
<path fill="#E3A6A9" d="M490.784,322.885c-0.684-0.273-5.293-5.646-7.286-7.993c-0.482-0.568-1.396-0.559-1.924,0.019l0,0
c-0.341,0.376-0.426,0.898-0.216,1.334l3.071,6.327L490.784,322.885z"/>
<path fill="#E3A6A9" d="M478.426,317.827l-5.405-2.118c-0.724-0.285-1.58,0.097-1.855,0.827l0,0
c-0.241,0.63,0.032,1.315,0.643,1.599l7.833,3.628L478.426,317.827z"/>
<path fill="#E3A6A9" d="M477.297,321.421l-7.934-1.585c-0.751-0.153-1.513,0.325-1.686,1.063l0,0
c-0.147,0.635,0.204,1.259,0.827,1.473l9.316,2.985L477.297,321.421z"/>
<path fill="#E3A6A9" d="M476.781,325.501l-7.436-0.729c-0.831-0.086-1.601,0.507-1.717,1.313l0,0
c-0.107,0.755,0.407,1.436,1.178,1.558l8.159,1.294L476.781,325.501z"/>
<path fill="#E3A6A9" d="M474.174,332.339l-4.425-0.553c-0.63-0.084-1.063-0.629-0.987-1.247l0,0
c0.076-0.588,0.589-1.055,1.203-1.09l7-0.514L474.174,332.339z"/>
</g>
<polygon fill="#E3A6A9" points="490.784,322.885 501.403,324.197 497.383,334.243 488.618,333.683 "/>
</g>
<path fill="#262127" d="M533.289,323.74l-37.514-6.461l-4.729,20.376l39.341,6.393c6.603,0.905,12.302-4.625,11.594-11.252l0,0
C541.483,328.151,537.911,324.427,533.289,323.74z"/>
</g>
</g>
</g>
<g>
<circle fill="#1E1A1A" cx="511.507" cy="228.209" r="13.362"/>
<path fill="#262127" d="M471.134,251.8c1.529,11.128,9.542,20.601,21.057,20.778c7.333,0.114,22.389-8.088,22.562-19.312
c0.175-11.226-7.787-22.735-23.201-22.973C480.036,230.117,469.445,239.539,471.134,251.8z"/>
<g>
<g>
<path fill="#E3A6A9" d="M484.558,266.645l2.087,15.473c0.564,4.199,4.428,7.141,8.627,6.571l0,0
c4.188-0.568,7.129-4.428,6.563-8.621l-2.012-14.901c-0.554-4.089-3.875-3.494-8.071-2.925l0,0
C487.556,262.813,484.004,262.556,484.558,266.645z"/>
</g>
<path fill="#0C162E" d="M499.761,260.468c0,0,0.64,17.691-13.442,19.249l-1.381-10.225L499.761,260.468z"/>
</g>
<path fill="#E3A6A9" d="M487.219,275.315L487.219,275.315c-8.21-0.127-14.854-5.058-14.728-13.06l0.213-13.761
c0.091-5.905,6.8-12.025,10.375-11.969l13.114,3.801c3.572,0.055,6.454,2.95,6.398,6.433l-0.21,13.708
C502.255,268.47,494.143,275.422,487.219,275.315z"/>
<g>
<ellipse transform="matrix(-0.9985 0.0543 -0.0543 -0.9985 988.6508 485.2995)" fill="#262127" cx="487.735" cy="256.076" rx="1.183" ry="1.152"/>
<ellipse transform="matrix(-0.9985 0.0546 -0.0546 -0.9985 967.079 485.2456)" fill="#262127" cx="476.917" cy="255.822" rx="1.181" ry="1.152"/>
<path fill="none" stroke="#B17079" stroke-width="0.3399" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M480.325,257.655l-0.37,3.298c0,0,0.172,1.745,2.729,1.116"/>
<path fill="#262127" d="M490.969,252.761c-0.072,0.009-0.144,0.013-0.22,0.009l-5.346-0.304c-0.595-0.035-1.05-0.533-1.016-1.116
c0.032-0.581,0.543-1.023,1.141-0.992l5.347,0.304c0.595,0.034,1.049,0.532,1.018,1.115
C491.861,252.288,491.467,252.69,490.969,252.761z"/>
<path fill="#262127" d="M478.084,252.278c-0.072,0.009-0.144,0.013-0.219,0.009l-3.268-0.187
c-0.596-0.034-1.053-0.533-1.019-1.114c0.035-0.583,0.548-1.026,1.144-0.992l3.265,0.185c0.599,0.035,1.053,0.533,1.019,1.114
C478.977,251.803,478.583,252.208,478.084,252.278z"/>
<path fill="#FFFFF6" d="M487.735,264.769l-9.639-0.659c0,0,1.561,3.95,4.82,3.95
C487.127,268.062,487.735,264.769,487.735,264.769z"/>
</g>
<path fill="#262127" d="M497.537,239.622c0,0-5.676,14.265,3.048,18.713l10.063-12.922L497.537,239.622z"/>
<path fill="#E3A6A9" d="M507.482,258.186c-0.045,2.754-2.369,4.951-5.193,4.907c-2.826-0.043-5.081-2.311-5.037-5.065
c0.04-2.754,2.365-4.951,5.191-4.907S507.526,255.432,507.482,258.186z"/>
<path fill="#262127" d="M503.343,238.894c0,0-7.313,6.703-14.427,8.296c-8.14,1.824-20.364,0.648-20.364,0.648
s8.116-15.07,19.525-13.745C499.485,235.418,503.343,238.894,503.343,238.894z"/>
</g>
</g>
<g>
<g>
<g>
<g>
<g>
<polygon fill="#E3A6A9" points="241.943,344.807 231.657,334.503 227.534,345.856 233.949,352.227 "/>
<path fill="#E3A6A9" d="M234.88,345.289c-4.432,2.629-5.891,8.356-3.258,12.79c2.632,4.432,8.357,5.892,12.791,3.26
c4.431-2.633,5.891-8.36,3.259-12.792C245.039,344.113,239.312,342.657,234.88,345.289z"/>
</g>
<path fill="#3C6BE2" d="M217.328,307.274l23.443,30.222l-15.84,13.812l-24.245-31.87c-3.92-5.43-1.705-13.095,4.506-15.595
h0.001C209.548,302.088,214.536,303.501,217.328,307.274z"/>
</g>
<g>
<path fill="#3C6BE2" d="M249.579,279.928c0,0-20.145,8.263-45.391,24.322c-2.683,1.707-4.498,4.521-4.625,7.698l0,0
c-0.286,7.17,7.281,11.973,13.646,8.661c8.877-4.618,30.965-17.544,31.065-17.802
C244.462,302.335,249.579,279.928,249.579,279.928z"/>
<polygon fill="#3359AD" points="244.274,302.808 244.616,295.633 232.42,309.85 "/>
</g>
</g>
<path fill="#3C6BE2" d="M273.046,274.375c0,0-16.081,0.656-28.026,7.953l-2.457,86.092h56.484l-2.939-90.236
C296.108,278.184,286.576,275.677,273.046,274.375z"/>
<g>
<path fill="#3C6BE2" d="M289.917,276.819c0,0,21.486,1.974,49.562,6.017c3.146,0.451,5.879,2.472,7.204,5.364l0,0
c2.989,6.523-2.503,12.744-9.335,13.195c0,0-44.207,1.403-44.958-0.593C292.21,300.326,289.917,276.819,289.917,276.819z"/>
<g>
<g>
<polygon fill="#E3A6A9" points="341.954,244.593 338.419,258.714 350.273,256.405 352.432,247.626 "/>
<circle fill="#E3A6A9" cx="347.517" cy="240.301" r="9.334"/>
<path fill="#E3A6A9" d="M339.541,235.45l2.554-9.776c0.16-0.838,0.98-1.421,1.811-1.284l0,0
c0.718,0.119,1.212,0.746,1.166,1.478l-0.886,10.867L339.541,235.45z"/>
</g>
<path fill="#3C6BE2" d="M327.546,288.836l7.21-37.562l20.834,2.773l-7.921,39.254c-1.488,6.526-8.708,9.926-14.686,6.915l0,0
C328.79,298.105,326.556,293.427,327.546,288.836z"/>
</g>
</g>
</g>
<g>
<polygon fill="#ECC341" points="242.472,368.42 241.132,387.032 300.178,386.7 298.959,368.42 "/>
<g>
<g>
<polygon fill="#E3A6A9" points="309.632,541.575 294.372,541.575 291.737,520.944 307,520.944 "/>
<g>
<g>
<defs>
<path id="XMLID_10_" d="M294.008,539.113h19.356l14.147,6.743c3.196,1.645,5.208,4.94,5.208,8.534l0,0h-38.711V539.113z"/>
</defs>
<use xlink:href="#XMLID_10_" overflow="visible" fill="#262127"/>
<clipPath id="XMLID_4_">
<use xlink:href="#XMLID_10_" overflow="visible"/>
</clipPath>
</g>
<path fill="#262127" d="M314.94,539.837l-4.355-5.903c0,0-6.819-1.245-6.223,6.166L314.94,539.837z"/>
</g>
</g>
<polygon fill="#ECC341" points="268.283,376.761 284.843,524.759 313.057,524.759 299.251,376.761 "/>
</g>
<g>
<g>
<polygon fill="#E3A6A9" points="236.212,541.575 251.475,541.575 254.107,520.944 238.844,520.944 "/>
<g>
<g>
<defs>
<path id="XMLID_9_" d="M251.838,539.113h-19.357l-14.146,6.743c-3.199,1.645-5.211,4.94-5.211,8.534l0,0h38.714V539.113z"/>
</defs>
<use xlink:href="#XMLID_9_" overflow="visible" fill="#262127"/>
<clipPath id="XMLID_11_">
<use xlink:href="#XMLID_9_" overflow="visible"/>
</clipPath>
</g>
<path fill="#262127" d="M230.904,539.837l4.357-5.903c0,0,6.817-1.245,6.222,6.166L230.904,539.837z"/>
</g>
</g>
<g>
<polygon fill="#ECC341" points="272.814,376.761 259.775,524.759 231.565,524.759 241.846,376.761 "/>
<polygon fill="#DDB237" points="270.806,399.313 254.593,398.912 270.038,408.266 "/>
</g>
</g>
</g>
<g>
<path fill="#E3A6A9" d="M260.788,248.52l0.567,27.211c0.101,4.83,3.927,8.752,8.752,8.976l0,0c5.173,0.24,9.522-3.846,9.604-9.023
l0.366-22.85L260.788,248.52z"/>
<g>
<g>
<path fill="#E3A6A9" d="M273.838,267.403l-0.561,0.002c-8.307,0.017-13.624-9.432-13.643-17.518l-1.467-13.623
c-0.006-2.091,1.736-3.793,3.886-3.798l19.797-0.042c3.839-0.01,6.959,3.016,6.969,6.752l0.029,15.904
C288.867,263.167,282.146,267.386,273.838,267.403z"/>
<path fill="#E3A6A9" d="M288.331,246.807l2.594,4.755c0.376,0.687-0.123,1.521-0.903,1.521h-2.619L288.331,246.807z"/>
</g>
<path fill="#0B0006" d="M279.864,266.556v-3.618c0,0,1.36,1.808,3.933,1.803C283.796,264.741,281.66,266.23,279.864,266.556z"/>
</g>
<path fill="#3C6BE2" d="M261.367,276.066c0,0,6.94,7.418,18.347-0.638l2.115,9.288l-22.533,0.461L261.367,276.066z"/>
<path fill="#3C6BE2" d="M261.367,276.066c0,0,6.94,7.418,18.347-0.638l2.115,9.288l-22.533,0.461L261.367,276.066z"/>
<path fill="#0B0006" d="M293.861,226.347c0.047-1.023-0.05-2.088-0.338-3.179c-0.903-3.392-3.726-6.071-7.138-6.888
c-5.891-1.412-11.315,2.53-12.18,8.074c-5.828-4.443-12.69,0.522-12.888,4.757c-13.612,0.179-12.603,12.9-10.764,17.684
l-0.006,0.001c0.743,2.582,7.448,10.216,9.125,12.096v1.494c0,1.876,1.525,3.394,3.399,3.385l10.507-0.052
c1.861-0.009,3.365-1.521,3.365-3.384v-13.069l0.805,1.733c0.257-0.172,3.14-3.276,3.024-8.294
c3.819-1.294,9.097-3.889,11.653-8.827c1.285-2.029,1.438-5.522,1.441-5.53L293.861,226.347z"/>
<ellipse transform="matrix(1 -0.0021 0.0021 1 -0.5218 0.5764)" fill="#E3A6A9" cx="275.769" cy="250.177" rx="4.092" ry="4.837"/>
</g>
</g>
<g>
<g>
<polygon fill="#3C6BE2" points="724.017,365.782 724.327,384.799 666.523,384.799 666.731,365.782 "/>
<g>
<g>
<rect x="699.867" y="520.469" fill="#E3A6A9" width="15.479" height="20.925"/>
<g>
<g>
<defs>
<path id="XMLID_8_" d="M699.867,538.893h19.632l14.345,6.844c3.246,1.668,5.283,5.008,5.283,8.654l0,0h-39.26V538.893z"/>
</defs>
<use xlink:href="#XMLID_8_" overflow="visible" fill="#262127"/>
<clipPath id="XMLID_12_">
<use xlink:href="#XMLID_8_" overflow="visible"/>
</clipPath>
</g>
<path fill="#262127" d="M721.097,539.63l-4.418-5.985c0,0-6.916-1.263-6.311,6.255L721.097,539.63z"/>
</g>
</g>
<polygon fill="#3C6BE2" points="692.607,374.242 698.683,524.338 727.294,524.338 724.017,374.242 "/>
</g>
<g>
<g>
<rect x="670.68" y="520.469" fill="#E3A6A9" width="15.479" height="20.925"/>
<g>
<g>
<defs>
<path id="XMLID_6_" d="M686.158,538.893h-19.63l-14.347,6.844c-3.242,1.668-5.282,5.008-5.282,8.654l0,0h39.259V538.893z"/>
</defs>
<use xlink:href="#XMLID_6_" overflow="visible" fill="#262127"/>
<clipPath id="XMLID_13_">
<use xlink:href="#XMLID_6_" overflow="visible"/>
</clipPath>
</g>
<path fill="#262127" d="M664.93,539.63l4.418-5.985c0,0,6.915-1.263,6.311,6.255L664.93,539.63z"/>
</g>
</g>
<g>
<polygon fill="#3C6BE2" points="666.731,377.491 662.573,524.338 692.607,524.338 694.265,379.863 "/>
<polygon fill="#3359AD" points="694.202,385.394 687.691,385.394 693.24,469.361 "/>
</g>
</g>
</g>
<g>
<g>
<path fill="#E17246" d="M693.099,270.404c0,0,16.31,0.666,28.428,8.065l2.49,87.313h-57.285l2.863-87.89
C669.595,277.893,679.381,271.724,693.099,270.404z"/>
<polygon fill="#D66538" points="715.71,303.053 722.55,314.459 722.55,320.581 715.243,323.752 "/>
<path fill="#D66538" d="M723.225,343.892l-16.758,6.868l-2.219-6.035l-9.983,0.611l-5.148,0.432l-2.484,4.635
c0,0,0.223,2.596,4.314,1.727c4.096-0.868,3.3,5.058,11.359,2.89l4.154-1.589l1.878,3.033l15.25-5.703L723.225,343.892z"/>
</g>
<g>
<g>
<g>
<polygon fill="#E3A6A9" points="600.323,277.127 608.506,282.284 602.476,291.415 594.85,286.562 "/>
<path fill="#E3A6A9" d="M602.217,280.749c-1.592,4.903-6.856,7.592-11.761,6c-4.9-1.588-7.589-6.852-5.997-11.756
c1.588-4.904,6.853-7.589,11.757-6C601.119,270.583,603.805,275.847,602.217,280.749z"/>
<path fill="#E3A6A9" d="M595.745,268.854l-8.604-5.3c-0.693-0.495-1.689-0.347-2.194,0.325l0,0
c-0.438,0.583-0.363,1.377,0.18,1.874l8.152,7.24L595.745,268.854z"/>
</g>
<path fill="#E17246" d="M642.717,294.746l-33.918-18.821l-11.396,18.015l35.699,19.368c6.048,3.087,13.386-0.319,14.931-6.932
l0,0C649.118,301.74,646.934,296.959,642.717,294.746z"/>
</g>
<g>
<path fill="#E17246" d="M673.073,276.036c0,0-15.837,6.853-40.892,20.988c-2.808,1.582-4.65,4.496-4.838,7.717l0,0
c-0.43,7.265,7.047,11.127,13.668,9.044c0,0,33.155-10.883,33.134-13.045C674.139,300.227,673.073,276.036,673.073,276.036z"/>
<polygon fill="#D66538" points="668.749,303.786 668.981,295.66 658.07,307.896 "/>
</g>
</g>
<g>
<path fill="#3C6BE2" d="M759.24,352.022l-106.143-11.052c-2.372-0.237-4.105-2.354-3.87-4.728l1.278-12.792
c0.238-2.375,2.356-4.107,4.729-3.869l106.143,11.051c2.376,0.239,4.104,2.354,3.87,4.729l-1.278,12.791
C763.73,350.527,761.616,352.261,759.24,352.022z"/>
<g>
<path fill="#E17246" d="M721.526,278.469c0,0,11.628,15.835,26.333,40.561c1.648,2.77,1.796,6.214,0.36,9.1l0,0
c-3.243,6.514-12.314,7.095-16.359,1.047c-5.64-8.435-18.979-30.701-18.945-30.98
C712.98,297.686,721.526,278.469,721.526,278.469z"/>
<g>
<g>
<path fill="#E3A6A9" d="M703.73,347.602c0,0-4.518,8.363-13.082,7.288c-9.886-1.241-10.732-9.074-6.229-10.656l6.678,0.498
c0,0,0.126-4.324,4.277-6.167c0.956-0.427,2.13-0.721,3.565-0.8L703.73,347.602z"/>
<polygon fill="#E3A6A9" points="702.54,348.077 712.69,343.312 707.742,334.601 698.939,337.765 "/>
<path fill="#E3A6A9" d="M696.885,338.057l-9.216,1.667c-0.604,0.132-1.037,0.668-1.037,1.284l0,0
c0,0.684,0.52,1.251,1.196,1.313l8.913,0.746L696.885,338.057z"/>
</g>
<path fill="#E17246" d="M734.702,315.308l-35.586,15.442l7.351,20.01l37.103-16.52c6.133-2.914,7.899-10.813,3.598-16.065l0,0
C744.15,314.493,739.023,313.315,734.702,315.308z"/>
</g>
</g>
</g>
</g>
<g>
<g>
<path fill="#E3A6A9" d="M704.063,245.753l-0.715,27.468c-0.128,4.875-4.011,8.813-8.883,9.014l0,0
c-5.224,0.216-9.592-3.929-9.649-9.16l-0.246-23.067L704.063,245.753z"/>
<path fill="#262127" d="M702.819,251.104c0,0-1.209,20.611-18.04,16.712l-0.091-8.301L702.819,251.104z"/>
</g>
<g>
<path fill="#262127" d="M674.652,224.433c0,0-9,6.524-1.081,15.29c7.921,8.764,6.774-15.29,6.774-15.29H674.652z"/>
<path fill="#262127" d="M706.473,244.512c0,0,12.228-17.28-4.679-21.667l1.223,22.614L706.473,244.512z"/>
<path fill="#E3A6A9" d="M688.581,263.552l0.566,0.004c8.39,0.063,15.235-6.685,15.298-15.071l0.125-17.145
c0.02-2.172-1.729-3.943-3.901-3.959l-19.984-0.148c-3.877-0.028-7.042,3.091-7.073,6.969l-0.103,14.055
C673.446,256.642,680.195,263.491,688.581,263.552z"/>
<g>
<circle fill="#262127" cx="689.943" cy="243.412" r="1.237"/>
<path fill="#262127" d="M677.027,243.432c0.051,0.684,0.644,1.197,1.322,1.15c0.684-0.048,1.197-0.639,1.15-1.323
c-0.047-0.683-0.639-1.197-1.322-1.149C677.494,242.159,676.98,242.751,677.027,243.432z"/>
<path fill="none" stroke="#B17079" stroke-width="0.3399" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M681.922,245.522l-0.43,2.964c0,0,0.205,1.874,2.874,1.158"/>
<path fill="#262127" d="M693.24,238.71c-0.074,0.013-0.15,0.016-0.229,0.015l-5.606-0.248c-0.627-0.028-1.109-0.558-1.084-1.184
c0.028-0.625,0.556-1.107,1.185-1.083l5.605,0.247c0.624,0.028,1.109,0.557,1.081,1.183
C694.171,238.187,693.761,238.627,693.24,238.71z"/>
<path fill="#262127" d="M679.394,238.43c-0.075,0.011-0.154,0.016-0.229,0.013l-3.427-0.15
c-0.628-0.028-1.113-0.558-1.085-1.183c0.028-0.626,0.558-1.11,1.182-1.084l3.429,0.15c0.626,0.028,1.111,0.558,1.083,1.183
C680.32,237.906,679.913,238.347,679.394,238.43z"/>
<path fill="none" stroke="#B17079" stroke-width="0.3399" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M691.019,250.202c0,0-4.932,4.975-12.296,1.08"/>
</g>
<path fill="#262127" d="M701.588,223.261l0.206-0.415c0,0-3.484-0.672-5.186-4.724c-0.278-0.845-0.674-1.778-1.26-2.833
c-3.615-6.532-15.332-6.632-19.991-1.682c-4.659,4.951-3.704,12.47,1.873,17.143c4.541,3.805,12.638,1.139,15.492,0.016
c0.702-0.275,1.461-0.363,2.207-0.246l1.676,0.267c-0.436,4.502,2.729,7.656,2.729,7.656v6.863h1.667l3.71-1.96l3.067-12.799
C707.779,230.547,705.397,222.352,701.588,223.261z"/>
<circle fill="#E3A6A9" cx="705.886" cy="245.343" r="4.884"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1020 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 835 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -0,0 +1,27 @@
import { mapState } from 'vuex'
import store from "@/store"
// 尝试将用户在根目录中的store/index.js的vuex的state变量全部加载到全局变量中
let $uStoreKey = [];
try{
$uStoreKey = store.state ? Object.keys(store.state) : [];
}catch(e){
}
module.exports = {
beforeCreate() {
// 将vuex方法挂在到$u中
// 使用方法为如果要修改vuex的state中的user.name变量为"史诗" => this.$u.vuex('user.name', '史诗')
// 如果要修改vuex的state的version变量为1.0.1 => this.$u.vuex('version', '1.0.1')
this.$u.vuex = (name, value) => {
this.$store.commit('$uStore', {
name,value
})
}
},
computed: {
// 将vuex的state中的所有变量解构到全局混入的mixin中
...mapState($uStoreKey)
}
}

View File

@@ -0,0 +1,93 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
import config from '@/common/config.js';
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
let lifeData = {};
try{
// 尝试获取本地是否存在lifeData变量第一次启动APP时是不存在的
lifeData = uni.getStorageSync('lifeData');
}catch(e){
}
// 需要永久存储且下次APP启动需要取出的在state中的变量名
let saveStateKeys = ['vuex_user', 'vuex_token', 'vuex_remember', 'vuex_locale'];
// 保存变量到本地存储中
const saveLifeData = function(key, value){
// 判断变量名是否在需要存储的数组中
if(saveStateKeys.indexOf(key) != -1) {
// 获取本地存储的lifeData对象将变量添加到对象中
let tmp = uni.getStorageSync('lifeData');
// 第一次打开APP不存在lifeData变量故放一个{}空对象
tmp = tmp ? tmp : {};
tmp[key] = value;
// 执行这一步后所有需要存储的变量都挂载在本地的lifeData对象中
uni.setStorageSync('lifeData', tmp);
}
}
// 简化 vuex 操作文档https://uviewui.com/components/vuexDetail.html
const store = new Vuex.Store({
state: {
// 如果上面从本地获取的lifeData对象下有对应的属性就赋值给state中对应的变量
// 加上vuex_前缀是防止变量名冲突也让人一目了然
vuex_user: lifeData.vuex_user ? lifeData.vuex_user : {userName: 'JeeSite'},
vuex_token: lifeData.vuex_token ? lifeData.vuex_token : '',
vuex_remember: lifeData.vuex_remember ? lifeData.vuex_remember : '',
vuex_locale: lifeData.vuex_locale ? lifeData.vuex_locale : '',
// 如果vuex_version无需保存到本地永久存储无需lifeData.vuex_version方式
vuex_config: config,
// 自定义tabbar数据
// vuex_tabbar: [{
// iconPath: "/static/uview/example/component.png",
// selectedIconPath: "/static/uview/example/component_select.png",
// text: '组件',
// pagePath: '/pages/example/components'
// },
// {
// iconPath: "/static/uview/example/js.png",
// selectedIconPath: "/static/uview/example/js_select.png",
// text: '工具',
// midButton: true,
// pagePath: '/pages/example/js'
// },
// {
// iconPath: "/static/uview/example/template.png",
// selectedIconPath: "/static/uview/example/template_select.png",
// text: '模板',
// pagePath: '/pages/example/template'
// }
// ]
},
mutations: {
$uStore(state, payload) {
// 判断是否多层级调用state中为对象存在的情况诸如user.info.score = 1
let nameArr = payload.name.split('.');
let saveKey = '';
let len = nameArr.length;
if(len >= 2) {
let obj = state[nameArr[0]];
for(let i = 1; i < len - 1; i ++) {
obj = obj[nameArr[i]];
}
obj[nameArr[len - 1]] = payload.value;
saveKey = nameArr[0];
} else {
// 单层级变量在state就是一个普通变量的情况
state[payload.name] = payload.value;
saveKey = payload.name;
}
// 保存变量到本地,见顶部函数定义
saveLifeData(saveKey, state[saveKey])
}
}
})
export default store

41
hotgo-uniapp/uni.scss Normal file
View File

@@ -0,0 +1,41 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* 下方引入的为uView UI的集成样式文件为scss预处理器其中包含了一些"u-"开头的自定义变量
* 使用的时候请将下面的一行复制到您的uniapp项目根目录的uni.scss中即可
* uView自定义的css类名和scss变量均以"u-"开头,不会造成冲突,请放心使用
*/
$u-main-color: #303133;
$u-content-color: #505256;
$u-tips-color: #909399;
$u-light-color: #c0c4cc;
$u-border-color: #e4e7ed;
$u-bg-color: #f3f4f6;
$u-type-primary: #2979ff;
$u-type-primary-light: #ecf5ff;
$u-type-primary-disabled: #a0cfff;
$u-type-primary-dark: #2b85e4;
$u-type-warning: #ff9900;
$u-type-warning-disabled: #fcbd71;
$u-type-warning-dark: #f29100;
$u-type-warning-light: #fdf6ec;
$u-type-success: #19be6b;
$u-type-success-disabled: #71d5a1;
$u-type-success-dark: #18b566;
$u-type-success-light: #dbf1e1;
$u-type-error: #fa3534;
$u-type-error-disabled: #fab6b6;
$u-type-error-dark: #dd6161;
$u-type-error-light: #fef0f0;
$u-type-info: #909399;
$u-type-info-disabled: #c8c9cc;
$u-type-info-dark: #82848a;
$u-type-info-light: #f4f4f5;
$u-form-item-height: 70rpx;
$u-form-item-border-color: #dcdfe6;

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1019 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020 www.uviewui.com
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,106 @@
<p align="center">
<img alt="logo" src="https://uviewui.com/common/logo.png" width="120" height="120" style="margin-bottom: 10px;">
</p>
<h3 align="center" style="margin: 30px 0 30px;font-weight: bold;font-size:40px;">uView</h3>
<h3 align="center">多平台快速开发的UI框架</h3>
## 说明
uView UI是[uni-app](https://uniapp.dcloud.io/)生态优秀的UI框架全面的组件和便捷的工具会让您信手拈来如鱼得水
## 特性
- 兼容安卓iOS微信小程序H5QQ小程序百度小程序支付宝小程序头条小程序
- 60+精选组件,功能丰富,多端兼容,让您快速集成,开箱即用
- 众多贴心的JS利器让您飞镖在手召之即来百步穿杨
- 众多的常用页面和布局,让您专注逻辑,事半功倍
- 详尽的文档支持,现代化的演示效果
- 按需引入,精简打包体积
## 安装
```bash
# npm方式安装
npm i uview-ui
```
## 快速上手
1. `main.js`引入uView库
```js
// main.js
import uView from 'uview-ui';
Vue.use(uView);
```
2. `App.vue`引入基础样式(注意style标签需声明scss属性支持)
```css
/* App.vue */
<style lang="scss">
@import "uview-ui/index.scss";
</style>
```
3. `uni.scss`引入全局scss变量文件
```css
/* uni.scss */
@import "uview-ui/theme.scss";
```
4. `pages.json`配置easycom规则(按需引入)
```js
// pages.json
{
"easycom": {
// npm安装的方式不需要前面的"@/",下载安装的方式需要"@/"
// npm安装方式
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
// 下载安装方式
// "^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
},
// 此为本身已有的内容
"pages": [
// ......
]
}
```
请通过[快速上手](https://uviewui.com/components/quickstart.html)了解更详细的内容
## 使用方法
配置easycom规则后自动按需引入无需`import`组件,直接引用即可。
```html
<template>
<u-button>按钮</u-button>
</template>
```
请通过[快速上手](https://uviewui.com/components/quickstart.html)了解更详细的内容
## 链接
- [官方文档](https://uviewui.com/)
- [更新日志](https://uviewui.com/components/changelog.html)
- [升级指南](https://uviewui.com/components/changelog.html)
- [关于我们](https://uviewui.com/cooperation/about.html)
## 预览
您可以通过**微信**扫码,查看最佳的演示效果。
<br>
<br>
<img src="https://uviewui.com/common/weixin_mini_qrcode.png" width="220" height="220" >
<!-- ## 捐赠uView的研发
uView文档和源码全部开源免费如果您认为uView帮到了您的开发工作您可以捐赠uView的研发工作捐赠无门槛哪怕是一杯可乐也好(相信这比打赏主播更有意义)。
<img src="https://uviewui.com/common/wechat.png" width="220" >
<img style="margin-left: 100px;" src="https://uviewui.com/common/alipay.png" width="220" >
-->
## 版权信息
uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议意味着您无需支付任何费用也无需授权即可将uView应用到您的产品中。

View File

@@ -0,0 +1,190 @@
<template>
<u-popup mode="bottom" :border-radius="borderRadius" :popup="false" v-model="value" :maskCloseAble="maskCloseAble"
length="auto" :safeAreaInsetBottom="safeAreaInsetBottom" @close="popupClose" :z-index="uZIndex">
<view class="u-tips u-border-bottom" v-if="tips.text" :style="[tipsStyle]">
{{tips.text}}
</view>
<block v-for="(item, index) in list" :key="index">
<view
@touchmove.stop.prevent
@tap="itemClick(index)"
:style="[itemStyle(index)]"
class="u-action-sheet-item u-line-1"
:class="[index < list.length - 1 ? 'u-border-bottom' : '']"
:hover-stay-time="150"
>
<text>{{item.text}}</text>
<text class="u-action-sheet-item__subtext u-line-1" v-if="item.subText">{{item.subText}}</text>
</view>
</block>
<view class="u-gab" v-if="cancelBtn">
</view>
<view @touchmove.stop.prevent class="u-actionsheet-cancel u-action-sheet-item" hover-class="u-hover-class"
:hover-stay-time="150" v-if="cancelBtn" @tap="close">{{cancelText}}</view>
</u-popup>
</template>
<script>
/**
* actionSheet 操作菜单
* @description 本组件用于从底部弹出一个操作菜单供用户选择并返回结果。本组件功能类似于uni的uni.showActionSheetAPI配置更加灵活所有平台都表现一致。
* @tutorial https://www.uviewui.com/components/actionSheet.html
* @property {Array<Object>} list 按钮的文字数组,见官方文档示例
* @property {Object} tips 顶部的提示文字,见官方文档示例
* @property {String} cancel-text 取消按钮的提示文字
* @property {Boolean} cancel-btn 是否显示底部的取消按钮默认true
* @property {Number String} border-radius 弹出部分顶部左右的圆角值单位rpx默认0
* @property {Boolean} mask-close-able 点击遮罩是否可以关闭默认true
* @property {Boolean} safe-area-inset-bottom 是否开启底部安全区适配默认false
* @property {Number String} z-index z-index值默认1075
* @property {String} cancel-text 取消按钮的提示文字
* @event {Function} click 点击ActionSheet列表项时触发
* @event {Function} close 点击取消按钮时触发
* @example <u-action-sheet :list="list" @click="click" v-model="show"></u-action-sheet>
*/
export default {
name: "u-action-sheet",
props: {
// 点击遮罩是否可以关闭actionsheet
maskCloseAble: {
type: Boolean,
default: true
},
// 按钮的文字数组可以自定义颜色和字体大小字体单位为rpx
list: {
type: Array,
default () {
// 如下
// return [{
// text: '确定',
// color: '',
// fontSize: ''
// }]
return [];
}
},
// 顶部的提示文字
tips: {
type: Object,
default () {
return {
text: '',
color: '',
fontSize: '26'
}
}
},
// 底部的取消按钮
cancelBtn: {
type: Boolean,
default: true
},
// 是否开启底部安全区适配开启的话会在iPhoneX机型底部添加一定的内边距
safeAreaInsetBottom: {
type: Boolean,
default: false
},
// 通过双向绑定控制组件的弹出与收起
value: {
type: Boolean,
default: false
},
// 弹出的顶部圆角值
borderRadius: {
type: [String, Number],
default: 0
},
// 弹出的z-index值
zIndex: {
type: [String, Number],
default: 0
},
// 取消按钮的文字提示
cancelText: {
type: String,
default: '取消'
}
},
computed: {
// 顶部提示的样式
tipsStyle() {
let style = {};
if (this.tips.color) style.color = this.tips.color;
if (this.tips.fontSize) style.fontSize = this.tips.fontSize + 'rpx';
return style;
},
// 操作项目的样式
itemStyle() {
return (index) => {
let style = {};
if (this.list[index].color) style.color = this.list[index].color;
if (this.list[index].fontSize) style.fontSize = this.list[index].fontSize + 'rpx';
// 选项被禁用的样式
if (this.list[index].disabled) style.color = '#c0c4cc';
return style;
}
},
uZIndex() {
// 如果用户有传递z-index值优先使用
return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
}
},
methods: {
// 点击取消按钮
close() {
// 发送input事件并不会作用于父组件而是要设置组件内部通过props传递的value参数
// 这是一个vue发送事件的特殊用法
this.popupClose();
this.$emit('close');
},
// 弹窗关闭
popupClose() {
this.$emit('input', false);
},
// 点击某一个item
itemClick(index) {
// disabled的项禁止点击
if(this.list[index].disabled) return;
this.$emit('click', index);
this.$emit('input', false);
}
}
}
</script>
<style lang="scss" scoped>
@import "../../libs/css/style.components.scss";
.u-tips {
font-size: 26rpx;
text-align: center;
padding: 34rpx 0;
line-height: 1;
color: $u-tips-color;
}
.u-action-sheet-item {
@include vue-flex;;
line-height: 1;
justify-content: center;
align-items: center;
font-size: 32rpx;
padding: 34rpx 0;
flex-direction: column;
}
.u-action-sheet-item__subtext {
font-size: 24rpx;
color: $u-tips-color;
margin-top: 20rpx;
}
.u-gab {
height: 12rpx;
background-color: rgb(234, 234, 236);
}
.u-actionsheet-cancel {
color: $u-main-color;
}
</style>

View File

@@ -0,0 +1,256 @@
<template>
<view class="u-alert-tips" v-if="show" :class="[
!show ? 'u-close-alert-tips': '',
type ? 'u-alert-tips--bg--' + type + '-light' : '',
type ? 'u-alert-tips--border--' + type + '-disabled' : '',
]" :style="{
backgroundColor: bgColor,
borderColor: borderColor
}">
<view class="u-icon-wrap">
<u-icon v-if="showIcon" :name="uIcon" :size="description ? 40 : 32" class="u-icon" :color="uIconType" :custom-style="iconStyle"></u-icon>
</view>
<view class="u-alert-content" @tap.stop="click">
<view class="u-alert-title" :style="[uTitleStyle]">
{{title}}
</view>
<view v-if="description" class="u-alert-desc" :style="[descStyle]">
{{description}}
</view>
</view>
<view class="u-icon-wrap">
<u-icon @click="close" v-if="closeAble && !closeText" hoverClass="u-type-error-hover-color" name="close" color="#c0c4cc"
:size="22" class="u-close-icon" :style="{
top: description ? '18rpx' : '24rpx'
}"></u-icon>
</view>
<text v-if="closeAble && closeText" class="u-close-text" :style="{
top: description ? '18rpx' : '24rpx'
}">{{closeText}}</text>
</view>
</template>
<script>
/**
* alertTips 警告提示
* @description 警告提示,展现需要关注的信息
* @tutorial https://uviewui.com/components/alertTips.html
* @property {String} title 显示的标题文字
* @property {String} description 辅助性文字颜色比title浅一点字号也小一点可选
* @property {String} type 关闭按钮(默认为叉号icon图标)
* @property {String} icon 图标名称
* @property {Object} icon-style 图标的样式,对象形式
* @property {Object} title-style 标题的样式,对象形式
* @property {Object} desc-style 描述的样式,对象形式
* @property {String} close-able 用文字替代关闭图标close-able为true时有效
* @property {Boolean} show-icon 是否显示左边的辅助图标
* @property {Boolean} show 显示或隐藏组件
* @event {Function} click 点击组件时触发
* @event {Function} close 点击关闭按钮时触发
*/
export default {
name: 'u-alert-tips',
props: {
// 显示文字
title: {
type: String,
default: ''
},
// 主题success/warning/info/error
type: {
type: String,
default: 'warning'
},
// 辅助性文字
description: {
type: String,
default: ''
},
// 是否可关闭
closeAble: {
type: Boolean,
default: false
},
// 关闭按钮自定义文本
closeText: {
type: String,
default: ''
},
// 是否显示图标
showIcon: {
type: Boolean,
default: false
},
// 文字颜色如果定义了color值icon会失效
color: {
type: String,
default: ''
},
// 背景颜色
bgColor: {
type: String,
default: ''
},
// 边框颜色
borderColor: {
type: String,
default: ''
},
// 是否显示
show: {
type: Boolean,
default: true
},
// 左边显示的icon
icon: {
type: String,
default: ''
},
// icon的样式
iconStyle: {
type: Object,
default() {
return {}
}
},
// 标题的样式
titleStyle: {
type: Object,
default() {
return {}
}
},
// 描述文字的样式
descStyle: {
type: Object,
default() {
return {}
}
},
},
data() {
return {
}
},
computed: {
uTitleStyle() {
let style = {};
// 如果有描述文字的话,标题进行加粗
style.fontWeight = this.description ? 500 : 'normal';
// 将用户传入样式对象和style合并传入的优先级比style高同属性会被覆盖
return this.$u.deepMerge(style, this.titleStyle);
},
uIcon() {
// 如果有设置icon名称就使用否则根据type主题推定一个默认的图标
return this.icon ? this.icon : this.$u.type2icon(this.type);
},
uIconType() {
// 如果有设置图标的样式优先使用没有的话则用type的样式
return Object.keys(this.iconStyle).length ? '' : this.type;
}
},
methods: {
// 点击内容
click() {
this.$emit('click');
},
// 点击关闭按钮
close() {
this.$emit('close');
}
}
}
</script>
<style lang="scss" scoped>
@import "../../libs/css/style.components.scss";
.u-alert-tips {
@include vue-flex;
align-items: center;
padding: 16rpx 30rpx;
border-radius: 8rpx;
position: relative;
transition: all 0.3s linear;
border: 1px solid #fff;
&--bg--primary-light {
background-color: $u-type-primary-light;
}
&--bg--info-light {
background-color: $u-type-info-light;
}
&--bg--success-light {
background-color: $u-type-success-light;
}
&--bg--warning-light {
background-color: $u-type-warning-light;
}
&--bg--error-light {
background-color: $u-type-error-light;
}
&--border--primary-disabled {
border-color: $u-type-primary-disabled;
}
&--border--success-disabled {
border-color: $u-type-success-disabled;
}
&--border--error-disabled {
border-color: $u-type-error-disabled;
}
&--border--warning-disabled {
border-color: $u-type-warning-disabled;
}
&--border--info-disabled {
border-color: $u-type-info-disabled;
}
}
.u-close-alert-tips {
opacity: 0;
visibility: hidden;
}
.u-icon {
margin-right: 16rpx;
}
.u-alert-title {
font-size: 28rpx;
color: $u-main-color;
}
.u-alert-desc {
font-size: 26rpx;
text-align: left;
color: $u-content-color;
}
.u-close-icon {
position: absolute;
top: 20rpx;
right: 20rpx;
}
.u-close-hover {
color: red;
}
.u-close-text {
font-size: 24rpx;
color: $u-tips-color;
position: absolute;
top: 20rpx;
right: 20rpx;
line-height: 1;
}
</style>

View File

@@ -0,0 +1,290 @@
<template>
<view class="content">
<view class="cropper-wrapper" :style="{ height: cropperOpt.height + 'px' }">
<canvas
class="cropper"
:disable-scroll="true"
@touchstart="touchStart"
@touchmove="touchMove"
@touchend="touchEnd"
:style="{ width: cropperOpt.width, height: cropperOpt.height, backgroundColor: 'rgba(0, 0, 0, 0.8)' }"
canvas-id="cropper"
id="cropper"
></canvas>
<canvas
class="cropper"
:disable-scroll="true"
:style="{
position: 'fixed',
top: `-${cropperOpt.width * cropperOpt.pixelRatio}px`,
left: `-${cropperOpt.height * cropperOpt.pixelRatio}px`,
width: `${cropperOpt.width * cropperOpt.pixelRatio}px`,
height: `${cropperOpt.height * cropperOpt.pixelRatio}`
}"
canvas-id="targetId"
id="targetId"
></canvas>
</view>
<view class="cropper-buttons safe-area-padding" :style="{ height: bottomNavHeight + 'px' }">
<!-- #ifdef H5 -->
<view class="upload" @tap="uploadTap">选择图片</view>
<!-- #endif -->
<!-- #ifndef H5 -->
<view class="upload" @tap="uploadTap">重新选择</view>
<!-- #endif -->
<view class="getCropperImage" @tap="getCropperImage(false)">确定</view>
</view>
</view>
</template>
<script>
import WeCropper from './weCropper.js';
export default {
props: {
// 裁剪矩形框的样式其中可包含的属性为lineWidth-边框宽度(单位rpx)color: 边框颜色,
// mask-遮罩颜色一般设置为一个rgba的透明度如"rgba(0, 0, 0, 0.35)"
boundStyle: {
type: Object,
default() {
return {
lineWidth: 4,
borderColor: 'rgb(245, 245, 245)',
mask: 'rgba(0, 0, 0, 0.35)'
};
}
}
// // 裁剪框宽度单位rpx
// rectWidth: {
// type: [String, Number],
// default: 400
// },
// // 裁剪框高度单位rpx
// rectHeight: {
// type: [String, Number],
// default: 400
// },
// // 输出图片宽度单位rpx
// destWidth: {
// type: [String, Number],
// default: 400
// },
// // 输出图片高度单位rpx
// destHeight: {
// type: [String, Number],
// default: 400
// },
// // 输出的图片类型,如果发现裁剪的图片很大,可能是因为设置为了"png",改成"jpg"即可
// fileType: {
// type: String,
// default: 'jpg',
// },
// // 生成的图片质量
// // H5上无效目前不考虑使用此参数
// quality: {
// type: [Number, String],
// default: 1
// }
},
data() {
return {
// 底部导航的高度
bottomNavHeight: 50,
originWidth: 200,
width: 0,
height: 0,
cropperOpt: {
id: 'cropper',
targetId: 'targetCropper',
pixelRatio: 1,
width: 0,
height: 0,
scale: 2.5,
zoom: 8,
cut: {
x: (this.width - this.originWidth) / 2,
y: (this.height - this.originWidth) / 2,
width: this.originWidth,
height: this.originWidth
},
boundStyle: {
lineWidth: uni.upx2px(this.boundStyle.lineWidth),
mask: this.boundStyle.mask,
color: this.boundStyle.borderColor
}
},
// 裁剪框和输出图片的尺寸,高度默认等于宽度
// 输出图片宽度单位px
destWidth: 200,
// 裁剪框宽度单位px
rectWidth: 200,
// 输出的图片类型,如果'png'类型发现裁剪的图片太大,改成"jpg"即可
fileType: 'jpg',
src: '', // 选择的图片路径,用于在点击确定时,判断是否选择了图片
};
},
onLoad(option) {
let rectInfo = uni.getSystemInfoSync();
this.width = rectInfo.windowWidth;
this.height = rectInfo.windowHeight - this.bottomNavHeight;
this.cropperOpt.width = this.width;
this.cropperOpt.height = this.height;
this.cropperOpt.pixelRatio = rectInfo.pixelRatio;
if (option.destWidth) this.destWidth = option.destWidth;
if (option.rectWidth) {
let rectWidth = Number(option.rectWidth);
this.cropperOpt.cut = {
x: (this.width - rectWidth) / 2,
y: (this.height - rectWidth) / 2,
width: rectWidth,
height: rectWidth
};
}
this.rectWidth = option.rectWidth;
if (option.fileType) this.fileType = option.fileType;
// 初始化
this.cropper = new WeCropper(this.cropperOpt)
.on('ready', ctx => {
// wecropper is ready for work!
})
.on('beforeImageLoad', ctx => {
// before picture loaded, i can do something
})
.on('imageLoad', ctx => {
// picture loaded
})
.on('beforeDraw', (ctx, instance) => {
// before canvas draw,i can do something
});
// 设置导航栏样式以免用户在page.json中没有设置为黑色背景
uni.setNavigationBarColor({
frontColor: '#ffffff',
backgroundColor: '#000000'
});
uni.chooseImage({
count: 1, // 默认9
sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: res => {
this.src = res.tempFilePaths[0];
// 获取裁剪图片资源后给data添加src属性及其值
this.cropper.pushOrign(this.src);
}
});
},
methods: {
touchStart(e) {
this.cropper.touchStart(e);
},
touchMove(e) {
this.cropper.touchMove(e);
},
touchEnd(e) {
this.cropper.touchEnd(e);
},
getCropperImage(isPre = false) {
if(!this.src) return this.$u.toast('请先选择图片再裁剪');
let cropper_opt = {
destHeight: Number(this.destWidth), // uni.canvasToTempFilePath要求这些参数为数值
destWidth: Number(this.destWidth),
fileType: this.fileType
};
this.cropper.getCropperImage(cropper_opt, (path, err) => {
if (err) {
uni.showModal({
title: '温馨提示',
content: err.message
});
} else {
if (isPre) {
uni.previewImage({
current: '', // 当前显示图片的 http 链接
urls: [path] // 需要预览的图片 http 链接列表
});
} else {
uni.$emit('uAvatarCropper', path);
this.$u.route({
type: 'back'
});
}
}
});
},
uploadTap() {
const self = this;
uni.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: (res) => {
self.src = res.tempFilePaths[0];
// 获取裁剪图片资源后给data添加src属性及其值
self.cropper.pushOrign(this.src);
}
});
}
}
};
</script>
<style scoped lang="scss">
@import '../../libs/css/style.components.scss';
.content {
background: rgba(255, 255, 255, 1);
}
.cropper {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 11;
}
.cropper-buttons {
background-color: #000000;
color: #eee;
}
.cropper-wrapper {
position: relative;
@include vue-flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
width: 100%;
background-color: #000;
}
.cropper-buttons {
width: 100vw;
@include vue-flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
position: fixed;
bottom: 0;
left: 0;
font-size: 28rpx;
}
.cropper-buttons .upload,
.cropper-buttons .getCropperImage {
width: 50%;
text-align: center;
}
.cropper-buttons .upload {
text-align: left;
padding-left: 50rpx;
}
.cropper-buttons .getCropperImage {
text-align: right;
padding-right: 50rpx;
}
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,244 @@
<template>
<view class="u-avatar" :style="[wrapStyle]" @tap="click">
<image
@error="loadError"
:style="[imgStyle]"
class="u-avatar__img"
v-if="!uText && avatar"
:src="avatar"
:mode="imgMode"
></image>
<text class="u-line-1" v-else-if="uText" :style="{
fontSize: '38rpx'
}">{{uText}}</text>
<slot v-else></slot>
<view class="u-avatar__sex" v-if="showSex" :class="['u-avatar__sex--' + sexIcon]" :style="[uSexStyle]">
<u-icon :name="sexIcon" size="20"></u-icon>
</view>
<view class="u-avatar__level" v-if="showLevel" :style="[uLevelStyle]">
<u-icon :name="levelIcon" size="20"></u-icon>
</view>
</view>
</template>
<script>
let base64Avatar = "data:image/jpg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMraHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjMtYzAxMSA2Ni4xNDU2NjEsIDIwMTIvMDIvMDYtMTQ6NTY6MjcgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjREMEQwRkY0RjgwNDExRUE5OTY2RDgxODY3NkJFODMxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjREMEQwRkY1RjgwNDExRUE5OTY2RDgxODY3NkJFODMxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NEQwRDBGRjJGODA0MTFFQTk5NjZEODE4Njc2QkU4MzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NEQwRDBGRjNGODA0MTFFQTk5NjZEODE4Njc2QkU4MzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDg8QDw4MExMUFBMTHBsbGxwfHx8fHx8fHx8fAQcHBw0MDRgQEBgaFREVGh8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx//wAARCADIAMgDAREAAhEBAxEB/8QAcQABAQEAAwEBAAAAAAAAAAAAAAUEAQMGAgcBAQAAAAAAAAAAAAAAAAAAAAAQAAIBAwICBgkDBQAAAAAAAAABAhEDBCEFMVFBYXGREiKBscHRMkJSEyOh4XLxYjNDFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8A/fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHbHFyZ/Dam+yLA+Z2L0Pjtyj2poD4AAAAAAAAAAAAAAAAAAAAAAAAKWFs9y6lcvvwQeqj8z9wFaziY1n/HbUX9XF97A7QAGXI23EvJ1goyfzR0YEfN269jeZ+a03pNe0DIAAAAAAAAAAAAAAAAAAAACvtO3RcVkXlWutuL9YFYAAAAAOJRjKLjJVi9GmB5/csH/mu1h/in8PU+QGMAAAAAAAAAAAAAAAAAAaMDG/6MmMH8C80+xAelSSVFolwQAAAAAAAHVlWI37ErUulaPk+hgeYnCUJuElSUXRrrQHAAAAAAAAAAAAAAAAABa2Oz4bM7r4zdF2ICmAAAAAAAAAg7zZ8GX41wuJP0rRgYAAAAAAAAAAAAAAAAAD0m2R8ODaXU33tsDSAAAAAAAAAlb9HyWZcnJd9PcBHAAAAAAAAAAAAAAAAAPS7e64Vn+KA0AAAAAAAAAJm+v8Ftf3ewCKAAAAAAAAAAAAAAAAAX9muqeGo9NttP06+0DcAAAAAAAAAjb7dTu2ra+VOT9P8AQCWAAAAAAAAAAAAAAAAAUNmyPt5Ltv4bui/kuAF0AAAAAAADiUlGLlJ0SVW+oDzOXfd/Ind6JPRdS0QHSAAAAAAAAAAAAAAAAAE2nVaNcGB6Lbs6OTao9LsF51z60BrAAAAAABJ3jOVHjW3r/sa9QEgAAAAAAAAAAAAAAAAAAAPu1duWriuW34ZR4MC9hbnZyEoy8l36XwfYBsAAADaSq9EuLAlZ+7xSdrGdW9Hc5dgEdtt1erfFgAAAAAAAAAAAAAAAAADVjbblX6NR8MH80tEBRs7HYivyzlN8lovaBPzduvY0m6eK10TXtAyAarO55lpJK54orolr+4GqO/Xaea1FvqbXvA+Z77kNeW3GPbV+4DJfzcm/pcm3H6Vou5AdAFLC2ed2Pjv1txa8sV8T6wOL+yZEKu1JXFy4MDBOE4ScZxcZLinoB8gAAAAAAAAAAAB242LeyJ+C3GvN9C7QLmJtePYpKS+5c+p8F2IDYAANJqj1T4oCfk7Nj3G5Wn9qXJax7gJ93Z82D8sVNc4v30A6Xg5i42Z+iLfqARwcyT0sz9MWvWBps7LlTf5Grce9/oBTxdtxseklHxT+uWr9AGoAB138ezfj4bsFJdD6V2MCPm7RdtJzs1uW1xXzL3gTgAAAAAAAAADRhYc8q74I6RWs5ckB6GxYtWLat21SK731sDsAAAAAAAAAAAAAAAASt021NO/YjrxuQXT1oCOAAAAAAABzGLlJRSq26JAelwsWONYjbXxcZvmwO8AAAAAAAAAAAAAAAAAAef3TEWPkVivx3NY9T6UBiAAAAAABo2+VmGXblddIJ8eivRUD0oAAAAAAAAAAAAAAAAAAAYt4tKeFKVNYNSXfRgefAAAAAAAAr7VuSSWPedKaW5v1MCsAAAAAAAAAAAAAAAAAAIe6bj96Ts2n+JPzSXzP3ATgAAAAAAAAFbbt1UUrOQ9FpC4/UwK6aaqtU+DAAAAAAAAAAAAAAA4lKMIuUmoxWrb4ARNx3R3q2rLpa4Sl0y/YCcAAAAAAAAAAANmFud7G8r89r6X0dgFvGzLGRGtuWvTF6NAdwAAAAAAAAAAAy5W442PVN+K59EePp5ARMvOv5MvO6QXCC4AZwAAAAAAAAAAAAAcxlKLUotprg1owN+PvORborq+7Hnwl3gUbO74VzRydt8pKn68ANcJwmqwkpLmnUDkAAAAfNy9atqtyagut0AxXt5xIV8Fbj6lRd7Am5G65V6qUvtwfyx94GMAAAAAAAAAAAAAAAAAAAOU2nVOj5gdsc3LiqRvTpyqwOxbnnrhdfpSfrQB7pnv/AGvuS9gHXPMy5/Fem1yq0v0A6W29XqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//Z";
/**
* avatar 头像
* @description 本组件一般用于展示头像的地方,如个人中心,或者评论列表页的用户头像展示等场所。
* @tutorial https://www.uviewui.com/components/avatar.html
* @property {String} bg-color 背景颜色,一般显示文字时用(默认#ffffff
* @property {String} src 头像路径,如加载失败,将会显示默认头像
* @property {String Number} size 头像尺寸,可以为指定字符串(large, default, mini)或者数值单位rpx默认default
* @property {String} mode 显示类型见上方说明默认circle
* @property {String} sex-icon 性别图标man-男woman-女默认man
* @property {String} level-icon 等级图标默认level
* @property {String} sex-bg-color 性别图标背景颜色
* @property {String} level-bg-color 等级图标背景颜色
* @property {String} show-sex 是否显示性别图标默认false
* @property {String} show-level 是否显示等级图标默认false
* @property {String} img-mode 头像图片的裁剪类型与uni的image组件的mode参数一致如效果达不到需求可尝试传widthFix值默认aspectFill
* @property {String} index 用户传递的标识符值如果是列表循环可穿v-for的index值
* @event {Function} click 头像被点击
* @example <u-avatar :src="src"></u-avatar>
*/
export default {
name: 'u-avatar',
props: {
// 背景颜色
bgColor: {
type: String,
default: 'transparent'
},
// 头像路径
src: {
type: String,
default: ''
},
// 尺寸large-大default-中等mini-小如果为数值则单位为rpx
// 宽度等于高度
size: {
type: [String, Number],
default: 'default'
},
// 头像模型square-带圆角方形circle-圆形
mode: {
type: String,
default: 'circle'
},
// 文字内容
text: {
type: String,
default: ''
},
// 图片的裁剪模型
imgMode: {
type: String,
default: 'aspectFill'
},
// 标识符
index: {
type: [String, Number],
default: ''
},
// 右上角性别角标man-男woman-女
sexIcon: {
type: String,
default: 'man'
},
// 右下角的等级图标
levelIcon: {
type: String,
default: 'level'
},
// 右下角等级图标背景颜色
levelBgColor: {
type: String,
default: ''
},
// 右上角性别图标的背景颜色
sexBgColor: {
type: String,
default: ''
},
// 是否显示性别图标
showSex: {
type: Boolean,
default: false
},
// 是否显示等级图标
showLevel: {
type: Boolean,
default: false
}
},
data() {
return {
error: false,
// 头像的地址因为如果加载错误需要赋值为默认图片props值无法修改所以需要一个中间值
avatar: this.src ? this.src : base64Avatar,
}
},
watch: {
src(n) {
// 用户可能会在头像加载失败时,再次修改头像值,所以需要重新赋值
if(!n) {
// 如果传入null或者''或者undefined显示默认头像
this.avatar = base64Avatar;
this.error = true;
} else {
this.avatar = n;
this.error = false;
}
}
},
computed: {
wrapStyle() {
let style = {};
style.height = this.size == 'large' ? '120rpx' : this.size == 'default' ?
'90rpx' : this.size == 'mini' ? '70rpx' : this.size + 'rpx';
style.width = style.height;
style.flex = `0 0 ${style.height}`;
style.backgroundColor = this.bgColor;
style.borderRadius = this.mode == 'circle' ? '500px' : '5px';
if(this.text) style.padding = `0 6rpx`;
return style;
},
imgStyle() {
let style = {};
style.borderRadius = this.mode == 'circle' ? '500px' : '5px';
return style;
},
// 取字符串的第一个字符
uText() {
return String(this.text)[0];
},
// 性别图标的自定义样式
uSexStyle() {
let style = {};
if(this.sexBgColor) style.backgroundColor = this.sexBgColor;
return style;
},
// 等级图标的自定义样式
uLevelStyle() {
let style = {};
if(this.levelBgColor) style.backgroundColor = this.levelBgColor;
return style;
}
},
methods: {
// 图片加载错误时,显示默认头像
loadError() {
this.error = true;
this.avatar = base64Avatar;
},
click() {
this.$emit('click', this.index);
}
}
}
</script>
<style lang="scss" scoped>
@import "../../libs/css/style.components.scss";
.u-avatar {
/* #ifndef APP-NVUE */
display: inline-flex;
/* #endif */
align-items: center;
justify-content: center;
font-size: 28rpx;
color: $u-content-color;
border-radius: 10px;
position: relative;
&__img {
width: 100%;
height: 100%;
}
&__sex {
position: absolute;
width: 32rpx;
color: #ffffff;
height: 32rpx;
@include vue-flex;
justify-content: center;
align-items: center;
border-radius: 100rpx;
top: 5%;
z-index: 1;
right: -7%;
border: 1px #ffffff solid;
&--man {
background-color: $u-type-primary;
}
&--woman {
background-color: $u-type-error;
}
&--none {
background-color: $u-type-warning;
}
}
&__level {
position: absolute;
width: 32rpx;
color: #ffffff;
height: 32rpx;
@include vue-flex;
justify-content: center;
align-items: center;
border-radius: 100rpx;
bottom: 5%;
z-index: 1;
right: -7%;
border: 1px #ffffff solid;
background-color: $u-type-warning;
}
}
</style>

View File

@@ -0,0 +1,153 @@
<template>
<view @tap="backToTop" class="u-back-top" :class="['u-back-top--mode--' + mode]" :style="[{
bottom: bottom + 'rpx',
right: right + 'rpx',
borderRadius: mode == 'circle' ? '10000rpx' : '8rpx',
zIndex: uZIndex,
opacity: opacity
}, customStyle]">
<view class="u-back-top__content" v-if="!$slots.default && !$slots.$default">
<u-icon @click="backToTop" :name="icon" :custom-style="iconStyle"></u-icon>
<view class="u-back-top__content__tips">
{{tips}}
</view>
</view>
<slot v-else />
</view>
</template>
<script>
export default {
name: 'u-back-top',
props: {
// 返回顶部的形状circle-圆形square-方形
mode: {
type: String,
default: 'circle'
},
// 自定义图标
icon: {
type: String,
default: 'arrow-upward'
},
// 提示文字
tips: {
type: String,
default: ''
},
// 返回顶部滚动时间
duration: {
type: [Number, String],
default: 100
},
// 滚动距离
scrollTop: {
type: [Number, String],
default: 0
},
// 距离顶部多少距离显示单位rpx
top: {
type: [Number, String],
default: 400
},
// 返回顶部按钮到底部的距离单位rpx
bottom: {
type: [Number, String],
default: 200
},
// 返回顶部按钮到右边的距离单位rpx
right: {
type: [Number, String],
default: 40
},
// 层级
zIndex: {
type: [Number, String],
default: '9'
},
// 图标的样式,对象形式
iconStyle: {
type: Object,
default() {
return {
color: '#909399',
fontSize: '38rpx'
}
}
},
// 整个组件的样式
customStyle: {
type: Object,
default() {
return {}
}
}
},
watch: {
showBackTop(nVal, oVal) {
// 当组件的显示与隐藏状态发生跳变时,修改组件的层级和不透明度
// 让组件有显示和消失的动画效果如果用v-if控制组件状态将无设置动画效果
if(nVal) {
this.uZIndex = this.zIndex;
this.opacity = 1;
} else {
this.uZIndex = -1;
this.opacity = 0;
}
}
},
computed: {
showBackTop() {
// 由于scrollTop为页面的滚动距离默认为px单位这里将用于传入的top(rpx)值
// 转为px用于比较如果滚动条到顶的距离大于设定的距离就显示返回顶部的按钮
return this.scrollTop > uni.upx2px(this.top);
},
},
data() {
return {
// 不透明度,为了让组件有一个显示和隐藏的过渡动画
opacity: 0,
// 组件的z-index值隐藏时设置为-1就会看不到
uZIndex: -1
}
},
methods: {
backToTop() {
uni.pageScrollTo({
scrollTop: 0,
duration: this.duration
});
}
}
}
</script>
<style lang="scss" scoped>
@import "../../libs/css/style.components.scss";
.u-back-top {
width: 80rpx;
height: 80rpx;
position: fixed;
z-index: 9;
@include vue-flex;
flex-direction: column;
justify-content: center;
background-color: #E1E1E1;
color: $u-content-color;
align-items: center;
transition: opacity 0.4s;
&__content {
@include vue-flex;
flex-direction: column;
align-items: center;
&__tips {
font-size: 24rpx;
transform: scale(0.8);
line-height: 1;
}
}
}
</style>

Some files were not shown because too many files have changed in this diff Show More