Merge remote-tracking branch 'remotes/origin/master' into dev-admin
Showing
126 changed files
with
5216 additions
and
25 deletions
1 | -# **Running Football** | 1 | +# Running Football Blog |
2 | 2 | ||
3 | -## contents | 3 | +![](https://pic.51yuansu.com/backgd/cover/00/53/30/5c176880767a5.jpg!/fw/780/quality/90/unsharp/true/compress/true) |
4 | + | ||
5 | +## Table of Contents | ||
4 | * About the Project | 6 | * About the Project |
5 | * Getting Started | 7 | * Getting Started |
6 | * Usage | 8 | * Usage |
... | @@ -9,41 +11,219 @@ | ... | @@ -9,41 +11,219 @@ |
9 | * License | 11 | * License |
10 | * Contact | 12 | * Contact |
11 | 13 | ||
14 | + | ||
12 | --- | 15 | --- |
13 | *** | 16 | *** |
14 | --- | 17 | --- |
15 | 18 | ||
16 | 19 | ||
17 | -## **About the Project** | 20 | +## About the Project |
21 | + | ||
22 | + A minimalistic version of PC football blog. The front-end project is mainly built using Vue2 and Element-UI; it is built and packaged using Webpack5. The back-end project is mainly designed using the Node framework Koa2 and the MongoDB database. | ||
18 | 23 | ||
19 | -A minimalistic version of PC football blog. The front-end project is mainly built using Vue2 and Element-UI; it is built and packaged using Webpack5. The back-end project is mainly designed using the Node framework Koa2 and the MongoDB database. | 24 | +### The main function |
20 | -###The main function | ||
21 | 25 | ||
22 | #### Client | 26 | #### Client |
23 | 27 | ||
24 | -1. Article function: the content of the article supports `Markdown` syntax and the code is highlighted; | 28 | + 1. Article function: the content of the article supports `Markdown` syntax and the code is highlighted; |
25 | -2. Tag function: retrieve article data by tag classification; | 29 | + 2. Tag function: retrieve article data by tag classification; |
26 | -3. Sidebar function: click ranking, webmaster recommendation, tag classification, etc.; | 30 | + 3. Sidebar function: click ranking, webmaster recommendation, tag classification, etc.; |
27 | -4. Search function: search the title and abstract of the article by keywords, and support search highlighting; | 31 | + 4. Search function: search the title and abstract of the article by keywords, and support search highlighting; |
28 | -5. Message function: you can like, reply to comments, count comments and the total number of replies, support `Emoji` emoticons; | 32 | + 5. Message function: you can like, reply to comments, count comments and the total number of replies, support `Emoji` emoticons; |
29 | -6. Other functions: image lazy loading, paging, sidebar top and one-click top, etc.; | 33 | + 6. Other functions: image lazy loading, paging, sidebar top and one-click top, etc. |
34 | + | ||
35 | +#### Management | ||
36 | + | ||
37 | + 1. Authority management: CRUD administrator, who can assign authority; | ||
38 | + 2. Article management: CRUD articles, article covers support local upload, article content supports `Markdown` syntax editing; | ||
39 | + 3. Label management: CRUD label, label background color supports custom selection with `Vue-Color` plug-in; | ||
40 | + 4. Message management: RD comments and replies | ||
41 | + | ||
42 | + | ||
43 | +#### Built With | ||
44 | + | ||
45 | +[Node.js](https://nodejs.org/zh-cn/) | ||
46 | + | ||
47 | +[Element-UI](https://element.eleme.cn/#/zh-CN) | ||
48 | + | ||
49 | +[Webpack5](https://webpack.docschina.org/) | ||
50 | + | ||
51 | +[MongoDB](https://www.mongodb.com/) | ||
52 | + | ||
53 | +[Koa2](https://www.koajs.com.cn/) | ||
54 | + | ||
55 | +[Vue2](https://cn.vuejs.org/) | ||
56 | + | ||
57 | + | ||
58 | + | ||
59 | +## Getting Started | ||
60 | + | ||
61 | +1. Install and configure the git environment, use the git clone command to download the project | ||
62 | + | ||
63 | +2. Install and configure node, vue, mongodb environment | ||
64 | + | ||
65 | +3. View the project structure, import related dependencies, load the project configuration | ||
66 | + | ||
67 | +4. Configure the database environment and initialize user information | ||
68 | + | ||
69 | +5. Start the project | ||
70 | + | ||
71 | + | ||
72 | + | ||
73 | +### Installation | ||
74 | + | ||
75 | +#### Environmental preparation | ||
76 | + | ||
77 | + `node.js` Environment configuration installation | ||
78 | + | ||
79 | + `vue`、`vue-cli` Environment configuration installation | ||
80 | + | ||
81 | + `mongodb`、`mongodb Compass` Environment configuration installation | ||
82 | + | ||
83 | + | ||
84 | + | ||
85 | +## Usage | ||
86 | + | ||
87 | +> `Vue` project configuration start | ||
88 | + | ||
89 | +```shell | ||
90 | +-- `yarn` Instruction to install | ||
91 | +npm install -g yarn | ||
92 | +npm install yarn --save | ||
93 | + | ||
94 | +-- `Vue` project dependency introduction | ||
95 | +npm install | ||
96 | +cnpm install | ||
97 | + | ||
98 | +-- Extension component dependency introduction | ||
99 | +`vue-lazyload` Plugin:yarn add vue-lazyload -S | ||
100 | +`vue-color` plugin:yarn add vue-color -S | ||
101 | +`style-resources-loader` plugin:yarn add style-resources-loader -D | ||
102 | +`mdrkdown` syntax support related plugins:marked、highlightJs yarn add marked highlightJs -S | ||
103 | +``` | ||
104 | + | ||
105 | + | ||
106 | + | ||
107 | +>`mongodb` configuration: | ||
108 | + | ||
109 | + `Mongodb` configuration information correspondence:`code/server/config.js`File configuration database information | ||
110 | + | ||
111 | + | ||
112 | +```powershell | ||
113 | +// Enter the `mongodb` installation directory and execute the command to start the ‘mongo’ service | ||
114 | +> mongo | ||
115 | + | ||
116 | +// Display database list | ||
117 | +> show dbs | ||
118 | + | ||
119 | +// Create a new `rfBlog` database | ||
120 | +> use rfBlog | ||
121 | + | ||
122 | +// Create an rf user in the `rfBlog` database with a password of 123456 | ||
123 | +> db.createUser({user:"rf",pwd:"123456",roles:[{role:"readWrite",db:'rfBlog'}]}) | ||
124 | + | ||
125 | +// Show who the library has users | ||
126 | +> show users | ||
127 | + | ||
128 | +// The database authenticates the user and password, and the result returns 1 to indicate successful authentication | ||
129 | +> db.auth("rf", "123456"); | ||
130 | +``` | ||
131 | + | ||
132 | + | ||
133 | + | ||
134 | +> Initialize system user information | ||
135 | + | ||
136 | +```powershell | ||
137 | +// Start `mongo` service | ||
138 | +> mongo | ||
139 | + | ||
140 | +// Display database list | ||
141 | +> show dbs | ||
142 | + | ||
143 | +// Access to the `wallBlog` database | ||
144 | +> use rfBlog | ||
145 | + | ||
146 | +// Insert a piece of data into the `users` collection of the library, account number: admin password: 123456 | ||
147 | +> db.users.insert({ | ||
148 | + "pwd" : "e10adc3949ba59abbe56e057f20f883e", | ||
149 | + "username" : "admin", | ||
150 | + "roles" : [ | ||
151 | + "admin" | ||
152 | + ] | ||
153 | +}) | ||
154 | + | ||
155 | + // Query the collection under the library (similar to a relational data table) | ||
156 | +> show collections | ||
157 | + | ||
158 | +// Query all data in the ‘users’ collection | ||
159 | +> db.users.find() | ||
160 | +``` | ||
161 | + | ||
162 | + | ||
163 | + | ||
164 | +> Project start (the concept of front-end and back-end separation, the front-end interface and back-end interface services need to be started respectively) | ||
165 | + | ||
166 | +```powershell | ||
167 | +// Local development management page | ||
168 | +yarn dev:admin | ||
169 | +// Local development of the client page | ||
170 | +yarn dev:client | ||
171 | +// Start the background interface service | ||
172 | +yarn server | ||
173 | +``` | ||
174 | + | ||
175 | + | ||
176 | + | ||
177 | +> Project packaging | ||
178 | + | ||
179 | +```powershell | ||
180 | +// Project packaging-management side | ||
181 | +yarn build:admin | ||
182 | +// Project packaging-client | ||
183 | +yarn build:client | ||
184 | +// View packaging information | ||
185 | +yarn analyz | ||
186 | +``` | ||
187 | + | ||
188 | + | ||
189 | + | ||
190 | +## Roadmap | ||
191 | +## Contributing | ||
192 | +## License | ||
193 | +## Contact | ||
194 | + | ||
195 | +### 项目展示 | ||
196 | +## 后台管理 | ||
197 | + | ||
198 | + | ||
199 | + | ||
200 | +#### 前台展示 | ||
201 | + | ||
202 | + | ||
203 | + | ||
204 | + | ||
205 | + | ||
206 | + | ||
207 | + | ||
208 | + | ||
209 | + | ||
210 | + | ||
211 | + | ||
212 | + | ||
213 | + | ||
214 | + | ||
215 | + | ||
216 | + | ||
217 | + | ||
218 | + | ||
219 | + | ||
220 | + | ||
221 | + | ||
222 | + | ||
223 | + | ||
30 | 224 | ||
31 | -####Management | ||
32 | 225 | ||
33 | -1. Authority management: CRUD administrator, who can assign authority; | ||
34 | -2. Article management: CRUD articles, article covers support local upload, article content supports `Markdown` syntax editing; | ||
35 | -3. Label management: CRUD label, label background color supports custom selection with `Vue-Color` plug-in; | ||
36 | -4. Message management: RD comments and replies; | ||
37 | 226 | ||
38 | -####Built With | ||
39 | 227 | ||
40 | - * ![Node.js](https://nodejs.org/zh-cn/) | ||
41 | - * ![Element-UI](https://element.eleme.cn/#/zh-CN) | ||
42 | - * ![Webpack5](https://webpack.docschina.org/) | ||
43 | - * ![MongoDB](https://www.mongodb.com/) | ||
44 | - * ![Koa2](https://www.koajs.com.cn/) | ||
45 | - * ![Vue2](https://cn.vuejs.org/) | ||
46 | 228 | ||
47 | -## **Getting Started** | ||
48 | 229 | ||
49 | -### **Prerequisites** | ... | ... |
rf-blog/.gitkeep
0 → 100644
File mode changed
rf-blog/code/client/index.html
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html> | ||
3 | + <head> | ||
4 | + <meta charset="UTF-8" /> | ||
5 | + <meta | ||
6 | + name="viewport" | ||
7 | + content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=0" | ||
8 | + /> | ||
9 | + <link rel="shortcut icon" href="./src/images/favicon.ico" /> | ||
10 | + <title>rfBlog</title> | ||
11 | + </head> | ||
12 | + <body> | ||
13 | + <div id="app"></div> | ||
14 | + </body> | ||
15 | +</html> | ||
16 | +<script></script> |
rf-blog/code/client/src/App.vue
0 → 100644
1 | +<template> | ||
2 | + <div id="app"> | ||
3 | + <Nav></Nav> | ||
4 | + <router-view></router-view> | ||
5 | + <CopyRight></CopyRight> | ||
6 | + <Top></Top> | ||
7 | + </div> | ||
8 | +</template> | ||
9 | +<script> | ||
10 | +import CopyRight from "components/copyRight"; | ||
11 | +import Top from "components/top"; | ||
12 | +import Nav from "components/nav"; | ||
13 | +import { mapActions } from "vuex"; | ||
14 | +export default { | ||
15 | + name: "app", | ||
16 | + components: { | ||
17 | + CopyRight, | ||
18 | + Top, | ||
19 | + Nav, | ||
20 | + }, | ||
21 | + created() { | ||
22 | + this.getLabelList(); | ||
23 | + }, | ||
24 | + methods: { | ||
25 | + ...mapActions({ | ||
26 | + getLabelList: "label/getLabelList", | ||
27 | + }), | ||
28 | + }, | ||
29 | +}; | ||
30 | +</script> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
rf-blog/code/client/src/api/blog.js
0 → 100644
1 | +import axios from "utils/request"; | ||
2 | + | ||
3 | +/** | ||
4 | + * 获取博客列表 | ||
5 | + * @param data | ||
6 | + * @returns {AxiosPromise} | ||
7 | + */ | ||
8 | +export function apiGetBlogList(params) { | ||
9 | + return axios.get("/blog/list", params); | ||
10 | +} | ||
11 | +/** | ||
12 | + * 获取博客详情 | ||
13 | + * @param data | ||
14 | + * @returns {AxiosPromise} | ||
15 | + */ | ||
16 | +export function apiGetBlogDetail(params) { | ||
17 | + return axios.get("/blog/info", params); | ||
18 | +} | ||
19 | +/** | ||
20 | + * 点赞 | ||
21 | + * @param data | ||
22 | + * @returns {AxiosPromise} | ||
23 | + */ | ||
24 | +export function apiUpdateLikes(params) { | ||
25 | + return axios.post("/blog/updateLikes", params); | ||
26 | +} | ||
27 | +/** | ||
28 | + * 浏览量 | ||
29 | + * @param data | ||
30 | + * @returns {AxiosPromise} | ||
31 | + */ | ||
32 | +export function apiUpdatePV(params) { | ||
33 | + return axios.post("/blog/updatePV", params); | ||
34 | +} |
rf-blog/code/client/src/api/label.js
0 → 100644
rf-blog/code/client/src/api/message.js
0 → 100644
1 | +import axios from "utils/request"; | ||
2 | + | ||
3 | +/** | ||
4 | + * 获取留言列表 | ||
5 | + * @param data | ||
6 | + * @returns {AxiosPromise} | ||
7 | + */ | ||
8 | +export function apiGetMessageList(params) { | ||
9 | + return axios.get("/message/list", params); | ||
10 | +} | ||
11 | + | ||
12 | +/** | ||
13 | + * 获取回复数量 | ||
14 | + * @param data | ||
15 | + * @returns {AxiosPromise} | ||
16 | + */ | ||
17 | +export function apiGetReplyCount(params) { | ||
18 | + return axios.get("/message/replyCount", params); | ||
19 | +} | ||
20 | + | ||
21 | +/** | ||
22 | + * 添加留言 | ||
23 | + * @param data | ||
24 | + * @returns {AxiosPromise} | ||
25 | + */ | ||
26 | +export function apiAddMessage(params) { | ||
27 | + return axios.post("/message/add", params); | ||
28 | +} | ||
29 | + | ||
30 | +/** | ||
31 | + * 点赞 | ||
32 | + * @param data | ||
33 | + * @returns {AxiosPromise} | ||
34 | + */ | ||
35 | +export function apiUpdateLikes(params) { | ||
36 | + return axios.post("/message/updateLikes", params); | ||
37 | +} | ||
38 | + | ||
39 | +/** | ||
40 | + * 回复 | ||
41 | + * @param data | ||
42 | + * @returns {AxiosPromise} | ||
43 | + */ | ||
44 | +export function apiUpdateReplys(params) { | ||
45 | + return axios.post("/message/updateReplys", params); | ||
46 | +} |
1 | + | ||
2 | +<template> | ||
3 | + <div class="bread-crumbs">{{ title }}</div> | ||
4 | +</template> | ||
5 | + | ||
6 | +<script> | ||
7 | +export default { | ||
8 | + name: "breadCrumbs", | ||
9 | + components: {}, | ||
10 | + props: {}, | ||
11 | + computed: {}, | ||
12 | + data() { | ||
13 | + return { | ||
14 | + title: "首页", | ||
15 | + }; | ||
16 | + }, | ||
17 | + watch: {}, | ||
18 | + created() { | ||
19 | + let matched = this.$route.matched; | ||
20 | + if (matched && matched.length) { | ||
21 | + this.title = matched[matched.length - 1].meta["title"]; | ||
22 | + } | ||
23 | + }, | ||
24 | + mounted() {}, | ||
25 | + beforeDestroy() {}, | ||
26 | + methods: {}, | ||
27 | +}; | ||
28 | +</script> | ||
29 | + | ||
30 | +<style lang="less" scoped> | ||
31 | +.bread-crumbs { | ||
32 | + background-color: #f7f7f7; | ||
33 | + padding: 10px 24px; | ||
34 | + color: @mainColor; | ||
35 | +} | ||
36 | +</style> |
1 | +/** | ||
2 | + * 注入公共组件 | ||
3 | + */ | ||
4 | +import Vue from "vue"; | ||
5 | +// 检索当前目录的vue文件,便检索子文件夹 | ||
6 | +const componentsContext = require.context("./", true, /.vue$/); | ||
7 | +componentsContext.keys().forEach((component) => { | ||
8 | + // 获取文件中的 default 模块 | ||
9 | + const componentConfig = componentsContext(component).default; | ||
10 | + componentConfig.name && Vue.component(componentConfig.name, componentConfig); | ||
11 | +}); |
1 | +<!-- PCloading --> | ||
2 | +<template> | ||
3 | + <div class="spinner"> | ||
4 | + <div class="circle"></div> | ||
5 | + </div> | ||
6 | +</template> | ||
7 | +<script> | ||
8 | +export default { | ||
9 | + name: "Loading", | ||
10 | + components: {}, | ||
11 | + props: {}, | ||
12 | + computed: {}, | ||
13 | + data() { | ||
14 | + return {}; | ||
15 | + }, | ||
16 | + watch: {}, | ||
17 | + created() {}, | ||
18 | + mounted() {}, | ||
19 | + beforeDestroy() {}, | ||
20 | + methods: {}, | ||
21 | +}; | ||
22 | +</script> | ||
23 | +<style lang="less" scoped> | ||
24 | +.circle { | ||
25 | + margin: 20px auto; | ||
26 | + width: 100px; | ||
27 | + height: 100px; | ||
28 | + border: 5px white solid; | ||
29 | + border-left-color: #ff5500; | ||
30 | + border-right-color: #0c80fe; | ||
31 | + border-radius: 100%; | ||
32 | + animation: loading 1s infinite linear; | ||
33 | +} | ||
34 | +@keyframes loading { | ||
35 | + from { | ||
36 | + transform: rotate(0deg); | ||
37 | + } | ||
38 | + to { | ||
39 | + transform: rotate(360deg); | ||
40 | + } | ||
41 | +} | ||
42 | +</style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<template> | ||
2 | + <div class="none-data-wrapper"> | ||
3 | + <img src="../../images/none-data.jpg" alt="" /> | ||
4 | + </div> | ||
5 | +</template> | ||
6 | +<script> | ||
7 | +export default { | ||
8 | + name: "NoneData", | ||
9 | +}; | ||
10 | +</script> | ||
11 | +<style lang="less" scoped> | ||
12 | +.none-data-wrapper { | ||
13 | + text-align: center; | ||
14 | + margin-top: 160px; | ||
15 | + .none-data-icon { | ||
16 | + font-size: 100px; | ||
17 | + } | ||
18 | +} | ||
19 | +</style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<template> | ||
2 | + <div class="paging-container" v-if="total > 0"> | ||
3 | + <ul class="mo-paging"> | ||
4 | + <li | ||
5 | + :class="[ | ||
6 | + 'paging-item', | ||
7 | + 'paging-item--defalut', | ||
8 | + { 'paging-item--disabled': index === 1 }, | ||
9 | + ]" | ||
10 | + @click="prev" | ||
11 | + > | ||
12 | + < Previous | ||
13 | + </li> | ||
14 | + <li | ||
15 | + :class="[ | ||
16 | + 'paging-item', | ||
17 | + 'paging-item--defalut', | ||
18 | + { 'paging-item--disabled': index === 1 }, | ||
19 | + ]" | ||
20 | + @click="first" | ||
21 | + > | ||
22 | + first | ||
23 | + </li> | ||
24 | + | ||
25 | + <li :class="['paging-item', 'paging-item--more']" v-if="showPrevMore"> | ||
26 | + ... | ||
27 | + </li> | ||
28 | + | ||
29 | + <li | ||
30 | + v-for="pager in pagers" | ||
31 | + :key="pager" | ||
32 | + :class="[ | ||
33 | + 'paging-item', | ||
34 | + { 'paging-item--current': pageIndex === pager }, | ||
35 | + ]" | ||
36 | + @click="go(pager)" | ||
37 | + > | ||
38 | + {{ pager }} | ||
39 | + </li> | ||
40 | + | ||
41 | + <li :class="['paging-item', 'paging-item--more']" v-if="showNextMore"> | ||
42 | + ... | ||
43 | + </li> | ||
44 | + <li | ||
45 | + :class="[ | ||
46 | + 'paging-item', | ||
47 | + 'paging-item--defalut', | ||
48 | + { 'paging-item--disabled': index === pages }, | ||
49 | + ]" | ||
50 | + @click="last" | ||
51 | + > | ||
52 | + last | ||
53 | + </li> | ||
54 | + <li | ||
55 | + :class="[ | ||
56 | + 'paging-item', | ||
57 | + 'paging-item--defalut', | ||
58 | + { 'paging-item--disabled': index === pages }, | ||
59 | + ]" | ||
60 | + @click="next" | ||
61 | + > | ||
62 | + Next > | ||
63 | + </li> | ||
64 | + </ul> | ||
65 | + </div> | ||
66 | +</template> | ||
67 | + | ||
68 | +<script> | ||
69 | +export default { | ||
70 | + name: "Paging", | ||
71 | + props: { | ||
72 | + //页面中的可见页码,其他的以...替代, 必须是奇数 | ||
73 | + perPages: { | ||
74 | + type: Number, | ||
75 | + default: 5, | ||
76 | + }, | ||
77 | + pageIndex: { | ||
78 | + type: Number, | ||
79 | + default: 1, | ||
80 | + }, | ||
81 | + pageSize: { | ||
82 | + type: Number, | ||
83 | + default: 10, | ||
84 | + }, | ||
85 | + total: { | ||
86 | + type: Number, | ||
87 | + default: 0, | ||
88 | + }, | ||
89 | + }, | ||
90 | + computed: { | ||
91 | + //计算总页码 | ||
92 | + pages() { | ||
93 | + return Math.ceil(this.size / this.limit); | ||
94 | + }, | ||
95 | + //计算页码,当count等变化时自动计算 | ||
96 | + pagers() { | ||
97 | + const array = []; | ||
98 | + const perPages = this.perPages; | ||
99 | + const pageCount = this.pages; | ||
100 | + let current = this.index; | ||
101 | + const _offset = (perPages - 1) / 2; | ||
102 | + | ||
103 | + const offset = { | ||
104 | + start: current - _offset, | ||
105 | + end: current + _offset, | ||
106 | + }; | ||
107 | + | ||
108 | + //-1, 3 | ||
109 | + if (offset.start < 1) { | ||
110 | + offset.end = offset.end + (1 - offset.start); | ||
111 | + offset.start = 1; | ||
112 | + } | ||
113 | + if (offset.end > pageCount) { | ||
114 | + offset.start = offset.start - (offset.end - pageCount); | ||
115 | + offset.end = pageCount; | ||
116 | + } | ||
117 | + if (offset.start < 1) offset.start = 1; | ||
118 | + | ||
119 | + this.showPrevMore = offset.start > 1; | ||
120 | + this.showNextMore = offset.end < pageCount; | ||
121 | + | ||
122 | + for (let i = offset.start; i <= offset.end; i++) { | ||
123 | + array.push(i); | ||
124 | + } | ||
125 | + return array; | ||
126 | + }, | ||
127 | + }, | ||
128 | + watch: { | ||
129 | + pageIndex(val) { | ||
130 | + this.index = val || 1; | ||
131 | + }, | ||
132 | + pageSize(val) { | ||
133 | + this.limit = val || 10; | ||
134 | + }, | ||
135 | + total(val) { | ||
136 | + this.size = val || 1; | ||
137 | + }, | ||
138 | + }, | ||
139 | + data() { | ||
140 | + return { | ||
141 | + index: this.pageIndex, //当前页码 | ||
142 | + limit: this.pageSize, //每页显示条数 | ||
143 | + size: this.total || 1, //总记录数 | ||
144 | + showPrevMore: false, | ||
145 | + showNextMore: false, | ||
146 | + }; | ||
147 | + }, | ||
148 | + methods: { | ||
149 | + prev() { | ||
150 | + if (this.index > 1) { | ||
151 | + this.go(this.index - 1); | ||
152 | + } | ||
153 | + }, | ||
154 | + next() { | ||
155 | + if (this.index < this.pages) { | ||
156 | + this.go(this.index + 1); | ||
157 | + } | ||
158 | + }, | ||
159 | + first() { | ||
160 | + if (this.index !== 1) { | ||
161 | + this.go(1); | ||
162 | + } | ||
163 | + }, | ||
164 | + last() { | ||
165 | + if (this.index !== this.pages) { | ||
166 | + this.go(this.pages); | ||
167 | + } | ||
168 | + }, | ||
169 | + go(page) { | ||
170 | + if (this.index !== page) { | ||
171 | + this.index = page; | ||
172 | + this.$emit("change", this.index); | ||
173 | + } | ||
174 | + }, | ||
175 | + }, | ||
176 | +}; | ||
177 | +</script> | ||
178 | + | ||
179 | +<style lang="less" scoped> | ||
180 | +.paging-container { | ||
181 | + display: flex; | ||
182 | + justify-content: center; | ||
183 | + .mo-paging { | ||
184 | + display: flex; | ||
185 | + align-items: center; | ||
186 | + .paging-item { | ||
187 | + font-size: 14px; | ||
188 | + padding: 6px 16px; | ||
189 | + margin-left: 4px; | ||
190 | + cursor: pointer; | ||
191 | + color: #24292e; | ||
192 | + border: none; | ||
193 | + border-radius: 3px; | ||
194 | + box-sizing: border-box; | ||
195 | + &:first-child { | ||
196 | + margin-left: 0; | ||
197 | + } | ||
198 | + &:hover { | ||
199 | + box-sizing: border-box; | ||
200 | + color: #fff !important; | ||
201 | + background: @thinHighlightColor; | ||
202 | + border-color: transparent; | ||
203 | + } | ||
204 | + &.paging-item--defalut { | ||
205 | + color: @thinHighlightColor; | ||
206 | + } | ||
207 | + &.paging-item--disabled, | ||
208 | + &.paging-item--more { | ||
209 | + color: #959da5; | ||
210 | + pointer-events: none; | ||
211 | + } | ||
212 | + //选中 | ||
213 | + &.paging-item--current { | ||
214 | + background: @thinHighlightColor; | ||
215 | + color: #fff; | ||
216 | + border-color: transparent; | ||
217 | + position: relative; | ||
218 | + z-index: 1; | ||
219 | + border: none; | ||
220 | + } | ||
221 | + } | ||
222 | + } | ||
223 | +} | ||
224 | +</style> |
1 | +<template> | ||
2 | + <svg class="icon" aria-hidden="true"> | ||
3 | + <use :xlink:href="iconName"></use> | ||
4 | + </svg> | ||
5 | +</template> | ||
6 | + | ||
7 | +<script> | ||
8 | +export default { | ||
9 | + name: "Icon", | ||
10 | + props: { | ||
11 | + name: { | ||
12 | + type: String, | ||
13 | + required: true, | ||
14 | + }, | ||
15 | + }, | ||
16 | + computed: { | ||
17 | + iconName() { | ||
18 | + return `#${this.name}`; | ||
19 | + }, | ||
20 | + }, | ||
21 | +}; | ||
22 | +</script> |
1 | +<template> | ||
2 | + <router-link :to="path" :style="{ display: 'inline-block' }"> | ||
3 | + <div class="tag-wrapper" :style="{ backgroundColor: color }"> | ||
4 | + <i :style="{ borderRightColor: color }"></i> | ||
5 | + {{ text }} | ||
6 | + </div> | ||
7 | + </router-link> | ||
8 | +</template> | ||
9 | + | ||
10 | +<script> | ||
11 | +export default { | ||
12 | + name: "Tag", | ||
13 | + props: { | ||
14 | + path: { | ||
15 | + type: String, | ||
16 | + required: true, | ||
17 | + }, | ||
18 | + text: { | ||
19 | + type: String, | ||
20 | + required: true, | ||
21 | + }, | ||
22 | + color: { | ||
23 | + type: String, | ||
24 | + default: "@mainColor", | ||
25 | + }, | ||
26 | + }, | ||
27 | +}; | ||
28 | +</script> | ||
29 | +<style lang="less" scoped> | ||
30 | +.tag-wrapper { | ||
31 | + font-size: 12px; | ||
32 | + display: inline-block; | ||
33 | + text-decoration: none; | ||
34 | + font-weight: normal; | ||
35 | + font-size: 10px; | ||
36 | + color: #fff; | ||
37 | + height: 18px; | ||
38 | + line-height: 18px; | ||
39 | + // float: left; | ||
40 | + padding: 0 5px 0px 10px; | ||
41 | + position: relative; | ||
42 | + border-radius: 0 5px 5px 0; | ||
43 | + margin: 5px 9px 5px 8px; | ||
44 | + | ||
45 | + i { | ||
46 | + position: absolute; | ||
47 | + right: 100%; | ||
48 | + font-size: 0; | ||
49 | + line-height: 0; | ||
50 | + border: 9px solid transparent; | ||
51 | + } | ||
52 | + | ||
53 | + &:after { | ||
54 | + content: " "; | ||
55 | + width: 4px; | ||
56 | + height: 4px; | ||
57 | + background-color: #fff; | ||
58 | + border-radius: 4px; | ||
59 | + -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.3); | ||
60 | + box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.3); | ||
61 | + position: absolute; | ||
62 | + top: 7px; | ||
63 | + left: 2px; | ||
64 | + } | ||
65 | +} | ||
66 | +</style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<template> | ||
2 | + <div class="copyright-wrapper"> | ||
3 | + <span | ||
4 | + >Copyright © www.rasblog.com All rights reserved.<br /> | ||
5 | + 备案号:<a href="https://beian.miit.gov.cn/" target="_blank" | ||
6 | + >粤ICP备2021121326号</a | ||
7 | + ></span | ||
8 | + > | ||
9 | + </div> | ||
10 | +</template> | ||
11 | + | ||
12 | +<style lang="less" scoped> | ||
13 | +.copyright-wrapper { | ||
14 | + height: 80px; | ||
15 | + background-color: @mainColor; | ||
16 | + color: #fff; | ||
17 | + display: flex; | ||
18 | + justify-content: center; | ||
19 | + align-items: center; | ||
20 | + span { | ||
21 | + text-align: center; | ||
22 | + line-height: 22px; | ||
23 | + font-size: 14px; | ||
24 | + a { | ||
25 | + color: @thinHighlightColor; | ||
26 | + text-decoration: underline; | ||
27 | + } | ||
28 | + } | ||
29 | +} | ||
30 | +</style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<template> | ||
2 | + <a | ||
3 | + :href="githubLink" | ||
4 | + target="_blank" | ||
5 | + class="github-corner" | ||
6 | + aria-label="View source on Github" | ||
7 | + > | ||
8 | + <svg | ||
9 | + width="80" | ||
10 | + height="80" | ||
11 | + viewBox="0 0 250 250" | ||
12 | + style="" | ||
13 | + aria-hidden="true" | ||
14 | + > | ||
15 | + <path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path> | ||
16 | + <path | ||
17 | + d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" | ||
18 | + fill="currentColor" | ||
19 | + style="transform-origin: 130px 106px" | ||
20 | + class="octo-arm" | ||
21 | + ></path> | ||
22 | + <path | ||
23 | + d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" | ||
24 | + fill="currentColor" | ||
25 | + class="octo-body" | ||
26 | + ></path> | ||
27 | + </svg> | ||
28 | + </a> | ||
29 | +</template> | ||
30 | +<script> | ||
31 | +export default { | ||
32 | + name: "Github", | ||
33 | + props: { | ||
34 | + githubLink: { | ||
35 | + type: String, | ||
36 | + default: null, | ||
37 | + }, | ||
38 | + }, | ||
39 | +}; | ||
40 | +</script> | ||
41 | + | ||
42 | +<style lang="less" scoped> | ||
43 | +.github-corner { | ||
44 | + fill: #4ab7bd; | ||
45 | + color: #fff; | ||
46 | + position: absolute; | ||
47 | + top: 50px; | ||
48 | + border: 0; | ||
49 | + right: 0; | ||
50 | + | ||
51 | + &:hover .octo-arm { | ||
52 | + animation: octocat-wave 560ms ease-in-out; | ||
53 | + } | ||
54 | +} | ||
55 | + | ||
56 | +@keyframes octocat-wave { | ||
57 | + 0%, | ||
58 | + 100% { | ||
59 | + transform: rotate(0); | ||
60 | + } | ||
61 | + 20%, | ||
62 | + 60% { | ||
63 | + transform: rotate(-25deg); | ||
64 | + } | ||
65 | + 40%, | ||
66 | + 80% { | ||
67 | + transform: rotate(10deg); | ||
68 | + } | ||
69 | +} | ||
70 | +</style> | ||
71 | + |
1 | +<template> | ||
2 | + <div class="label-container"> | ||
3 | + <div class="side-title"> | ||
4 | + <Icon name="icon-label"></Icon> | ||
5 | + 标签分类 | ||
6 | + </div> | ||
7 | + <div class="label-content"> | ||
8 | + <div | ||
9 | + class="label-item" | ||
10 | + v-for="item in labelList" | ||
11 | + :key="item.label" | ||
12 | + :style="{ backgroundColor: item.bgColor }" | ||
13 | + > | ||
14 | + <router-link :to="`/label/${item.label}`"> | ||
15 | + {{ item.label }} | ||
16 | + </router-link> | ||
17 | + </div> | ||
18 | + </div> | ||
19 | + </div> | ||
20 | +</template> | ||
21 | + | ||
22 | +<script> | ||
23 | +import { mapGetters } from "vuex"; | ||
24 | +export default { | ||
25 | + name: "labelClassify", | ||
26 | + components: {}, | ||
27 | + props: {}, | ||
28 | + computed: { | ||
29 | + ...mapGetters({ labelList: "label/labelList" }), | ||
30 | + }, | ||
31 | + data() { | ||
32 | + return {}; | ||
33 | + }, | ||
34 | + watch: {}, | ||
35 | + created() { }, | ||
36 | + mounted() { }, | ||
37 | + beforeDestroy() { }, | ||
38 | + methods: {}, | ||
39 | +}; | ||
40 | +</script> | ||
41 | + | ||
42 | +<style lang="less" scoped> | ||
43 | +.label-container { | ||
44 | + background-color: #fff; | ||
45 | + margin-top: 20px; | ||
46 | + border-radius: 4px; | ||
47 | + .label-content { | ||
48 | + display: flex; | ||
49 | + align-items: center; | ||
50 | + flex-wrap: wrap; | ||
51 | + padding: 20px; | ||
52 | + .label-item { | ||
53 | + height: 30px; | ||
54 | + display: flex; | ||
55 | + justify-content: center; | ||
56 | + align-items: center; | ||
57 | + padding: 12px; | ||
58 | + color: #fff; | ||
59 | + margin: 4px; | ||
60 | + border-radius: 12px; | ||
61 | + transition: 1s ease all; | ||
62 | + position: relative; | ||
63 | + &:hover { | ||
64 | + border-radius: 0; | ||
65 | + cursor: pointer; | ||
66 | + } | ||
67 | + a { | ||
68 | + color: #fff; | ||
69 | + } | ||
70 | + } | ||
71 | + } | ||
72 | +} | ||
73 | +</style> |
1 | +<template> | ||
2 | + <div class="myself-container"> | ||
3 | + <div class="header-bg"> | ||
4 | + <img class="img-avatar" src="../images/avatar.png" /> | ||
5 | + <img class="img-bg" src="../images/bg4.jpg" /> | ||
6 | + </div> | ||
7 | + <div class="my-body"> | ||
8 | + <div class="my-name">RF</div> | ||
9 | + <div class="my-job">Running | Football</div> | ||
10 | + <div class="my-desc"> | ||
11 | + 个人博客 | ||
12 | + </div> | ||
13 | + </div> | ||
14 | + </div> | ||
15 | +</template> | ||
16 | + | ||
17 | +<script> | ||
18 | +export default { | ||
19 | + name: "myself", | ||
20 | + components: {}, | ||
21 | + props: {}, | ||
22 | + computed: {}, | ||
23 | + data() { | ||
24 | + return {}; | ||
25 | + }, | ||
26 | + watch: {}, | ||
27 | + created() { }, | ||
28 | + mounted() { }, | ||
29 | + beforeDestroy() { }, | ||
30 | + methods: {}, | ||
31 | +}; | ||
32 | +</script> | ||
33 | + | ||
34 | +<style lang="less" scoped> | ||
35 | +.myself-container { | ||
36 | + background-color: #fff; | ||
37 | + margin-top: 20px; | ||
38 | + border-radius: 4px; | ||
39 | + .header-bg { | ||
40 | + height: 150px; | ||
41 | + border-radius: 4px; | ||
42 | + position: relative; | ||
43 | + .img-avatar { | ||
44 | + width: 100px; | ||
45 | + height: 100px; | ||
46 | + position: absolute; | ||
47 | + bottom: -50px; | ||
48 | + left: calc(~"50% - 50px"); | ||
49 | + border-radius: 50%; | ||
50 | + z-index: 99; | ||
51 | + &:hover { | ||
52 | + animation: btnGroups 1s linear; | ||
53 | + } | ||
54 | + } | ||
55 | + .img-bg { | ||
56 | + position: absolute; | ||
57 | + width: 100%; | ||
58 | + height: 100%; | ||
59 | + object-fit: cover; | ||
60 | + } | ||
61 | + } | ||
62 | + .my-body { | ||
63 | + margin-top: 74px; | ||
64 | + display: flex; | ||
65 | + flex-direction: column; | ||
66 | + align-items: center; | ||
67 | + .my-name { | ||
68 | + font-size: 16px; | ||
69 | + font-weight: bold; | ||
70 | + margin-bottom: 10px; | ||
71 | + } | ||
72 | + .my-job { | ||
73 | + font-size: 14px; | ||
74 | + color: @thinHighlightColor; | ||
75 | + } | ||
76 | + .my-desc { | ||
77 | + font-size: 14px; | ||
78 | + color: @assistColor; | ||
79 | + padding: 20px 40px; | ||
80 | + line-height: 26px; | ||
81 | + } | ||
82 | + } | ||
83 | +} | ||
84 | +</style> |
rf-blog/code/client/src/components/nav.vue
0 → 100644
1 | +<template> | ||
2 | + <div class="nav-wrapper" :class="{ 'not-nav': showNav }" ref="header"> | ||
3 | + <nav> | ||
4 | + <img src="../images/logo.png" alt="RF" /> | ||
5 | + <ul> | ||
6 | + <li | ||
7 | + v-for="(item, index) in navList" | ||
8 | + :key="item.title" | ||
9 | + :class="{ active: currentIndex === index }" | ||
10 | + @click="goto(index, item.path)" | ||
11 | + > | ||
12 | + {{ item.title }} | ||
13 | + </li> | ||
14 | + </ul> | ||
15 | + </nav> | ||
16 | + </div> | ||
17 | +</template> | ||
18 | +<script> | ||
19 | +export default { | ||
20 | + name: "navComponent", | ||
21 | + components: {}, | ||
22 | + props: {}, | ||
23 | + computed: {}, | ||
24 | + data() { | ||
25 | + return { | ||
26 | + currentIndex: -1, | ||
27 | + showNav: false, | ||
28 | + navList: [ | ||
29 | + { title: "首页", path: "/index" }, | ||
30 | + { title: "文章分类", path: "/label/all" }, | ||
31 | + { title: "留言板", path: "/message" }, | ||
32 | + { title: "关于我们", path: "/myself" }, | ||
33 | + ], | ||
34 | + }; | ||
35 | + }, | ||
36 | + watch: {}, | ||
37 | + created() { }, | ||
38 | + mounted() { | ||
39 | + document.addEventListener("scroll", this.onScroll); | ||
40 | + }, | ||
41 | + beforeDestroy() { | ||
42 | + document.removeEventListener("scroll", this.onScroll); | ||
43 | + }, | ||
44 | + methods: { | ||
45 | + goto(index, path) { | ||
46 | + this.currentIndex = index; | ||
47 | + this.$router.push(path); | ||
48 | + }, | ||
49 | + onScroll() { | ||
50 | + const scrollTop = | ||
51 | + document.documentElement.scrollTop + document.body.scrollTop; | ||
52 | + this.showNav = scrollTop >= 120; | ||
53 | + }, | ||
54 | + }, | ||
55 | +}; | ||
56 | +</script> | ||
57 | + | ||
58 | +<style lang="less" scoped> | ||
59 | +.nav-wrapper { | ||
60 | + height: 50px; | ||
61 | + width: 100%; | ||
62 | + position: fixed; | ||
63 | + top: 0; | ||
64 | + left: 0; | ||
65 | + background-color: #fff; | ||
66 | + z-index: 100; | ||
67 | + transition: all 1.2s ease; | ||
68 | + transform: translate3d(0, 0, 0); | ||
69 | + box-shadow: 0 1px 1px @cuttingLineColor; | ||
70 | + &.not-nav { | ||
71 | + transform: translate3d(0, -50px, 0); | ||
72 | + opacity: 0; | ||
73 | + } | ||
74 | + nav { | ||
75 | + width: 1200px; | ||
76 | + height: 100%; | ||
77 | + margin: 0 auto; | ||
78 | + display: flex; | ||
79 | + justify-content: space-between; | ||
80 | + align-items: center; | ||
81 | + img { | ||
82 | + height: 98%; | ||
83 | + object-fit: contain; | ||
84 | + } | ||
85 | + ul { | ||
86 | + height: 100%; | ||
87 | + display: flex; | ||
88 | + justify-content: flex-end; | ||
89 | + align-items: center; | ||
90 | + color: #fff; | ||
91 | + li { | ||
92 | + padding: 0 22px; | ||
93 | + height: 100%; | ||
94 | + display: flex; | ||
95 | + justify-content: center; | ||
96 | + align-items: center; | ||
97 | + color: @mainColor; | ||
98 | + &:hover { | ||
99 | + cursor: pointer; | ||
100 | + color: @highlightColor; | ||
101 | + } | ||
102 | + } | ||
103 | + .active { | ||
104 | + color: @highlightColor; | ||
105 | + position: relative; | ||
106 | + &::before { | ||
107 | + content: ""; | ||
108 | + width: 67%; | ||
109 | + height: 4px; | ||
110 | + background-color: @highlightColor; | ||
111 | + position: absolute; | ||
112 | + top: 0; | ||
113 | + } | ||
114 | + } | ||
115 | + } | ||
116 | + } | ||
117 | +} | ||
118 | +</style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<template> | ||
2 | + <div class="search-container"> | ||
3 | + <input type="text" placeholder="请输入关键词" v-model="keyword" /> | ||
4 | + <button | ||
5 | + :class="{ 'btn-disabled': !keyword }" | ||
6 | + :disabled="!keyword" | ||
7 | + @click="goto" | ||
8 | + > | ||
9 | + 搜索 | ||
10 | + </button> | ||
11 | + </div> | ||
12 | +</template> | ||
13 | + | ||
14 | +<script> | ||
15 | +import { mapGetters, mapMutations } from 'vuex'; | ||
16 | +export default { | ||
17 | + name: "search", | ||
18 | + components: {}, | ||
19 | + props: { | ||
20 | + // 是否存储在vuex | ||
21 | + isCache: { | ||
22 | + type: Boolean, | ||
23 | + default: false, | ||
24 | + } | ||
25 | + }, | ||
26 | + computed: { | ||
27 | + ...mapGetters({ | ||
28 | + cacheKeyword: 'search/keyword' | ||
29 | + }) | ||
30 | + }, | ||
31 | + data() { | ||
32 | + return { | ||
33 | + keyword: "", | ||
34 | + }; | ||
35 | + }, | ||
36 | + watch: {}, | ||
37 | + created() { | ||
38 | + if (!this.isCache) { | ||
39 | + this.keyword = this.cacheKeyword; | ||
40 | + } | ||
41 | + }, | ||
42 | + mounted() { }, | ||
43 | + beforeDestroy() { | ||
44 | + if (!this.isCache) { | ||
45 | + this.setKeyword(''); | ||
46 | + } | ||
47 | + }, | ||
48 | + methods: { | ||
49 | + ...mapMutations({ | ||
50 | + setKeyword: 'search/setKeyword' | ||
51 | + }), | ||
52 | + goto() { | ||
53 | + if (this.isCache) { | ||
54 | + this.setKeyword(this.keyword); | ||
55 | + } | ||
56 | + this.$router.push({ | ||
57 | + path: `/label/${this.keyword}`, | ||
58 | + query: { | ||
59 | + search: 'search' | ||
60 | + }, | ||
61 | + }); | ||
62 | + }, | ||
63 | + }, | ||
64 | +}; | ||
65 | +</script> | ||
66 | + | ||
67 | +<style lang="less" scoped> | ||
68 | +.search-container { | ||
69 | + background-color: #fff; | ||
70 | + margin-top: 20px; | ||
71 | + padding: 20px; | ||
72 | + border-radius: 4px; | ||
73 | + display: flex; | ||
74 | + align-items: center; | ||
75 | + input { | ||
76 | + padding: 0 6px; | ||
77 | + border: 1px solid @borderColor; | ||
78 | + width: 80%; | ||
79 | + height: 26px; | ||
80 | + line-height: 26px; | ||
81 | + background-color: #f2f2f2; | ||
82 | + height: 28px; | ||
83 | + font-size: 14px; | ||
84 | + border-radius: 2px; | ||
85 | + &::placeholder { | ||
86 | + color: @assistColor; | ||
87 | + } | ||
88 | + &:focus { | ||
89 | + outline: none; | ||
90 | + color: #24292e; | ||
91 | + } | ||
92 | + } | ||
93 | + button { | ||
94 | + border-radius: 2px; | ||
95 | + background-color: #24292e; | ||
96 | + color: #fff; | ||
97 | + width: 20%; | ||
98 | + border: none; | ||
99 | + cursor: pointer; | ||
100 | + height: 28px; | ||
101 | + line-height: 28px; | ||
102 | + margin-left: 12px; | ||
103 | + a { | ||
104 | + color: #fff; | ||
105 | + } | ||
106 | + &.btn-disabled { | ||
107 | + cursor: not-allowed; | ||
108 | + opacity: 0.75; | ||
109 | + } | ||
110 | + } | ||
111 | +} | ||
112 | +</style> |
1 | +<template> | ||
2 | + <div class="side-article" v-loading="loading"> | ||
3 | + <div class="side-title"> | ||
4 | + <Icon | ||
5 | + :name="sideClassify === BROWSE_STATUS ? 'icon-hot' : 'icon-recommend'" | ||
6 | + ></Icon> | ||
7 | + {{ sideType[sideClassify] }} | ||
8 | + </div> | ||
9 | + <div class="side-list"> | ||
10 | + <div class="list-item" v-for="(item, index) in blogList" :key="item._id"> | ||
11 | + <div class="item-title" @click="goto(item._id)"> | ||
12 | + <div | ||
13 | + :style="{ backgroundColor: getActiveColor(index) }" | ||
14 | + class="index" | ||
15 | + v-show="sideClassify === BROWSE_STATUS" | ||
16 | + > | ||
17 | + {{ index + 1 }} | ||
18 | + </div> | ||
19 | + <div class="title">{{ item.title }}</div> | ||
20 | + </div> | ||
21 | + <div class="item-content"> | ||
22 | + <div class="item-img"> | ||
23 | + <img v-lazy="item.fileCoverImgUrl" /> | ||
24 | + </div> | ||
25 | + <div class="item-right"> | ||
26 | + <div class="item-desc"> | ||
27 | + {{ item.desc }} | ||
28 | + </div> | ||
29 | + <div class="item-func"> | ||
30 | + <div class="func-box"> | ||
31 | + <Icon name="icon-date02"></Icon> | ||
32 | + <div class="box-text"> | ||
33 | + {{ item.releaseTime | formatTime("yyyy-MM-dd") }} | ||
34 | + </div> | ||
35 | + </div> | ||
36 | + <div class="func-box"> | ||
37 | + <Icon name="icon-browse02"></Icon> | ||
38 | + <div class="box-text">{{ item.pv | formatNumber() }}</div> | ||
39 | + </div> | ||
40 | + </div> | ||
41 | + </div> | ||
42 | + </div> | ||
43 | + </div> | ||
44 | + </div> | ||
45 | + </div> | ||
46 | +</template> | ||
47 | + | ||
48 | +<script> | ||
49 | +import { apiGetBlogList } from "api/blog"; | ||
50 | +import { sortType, sideType, BROWSE_STATUS } from "src/constant/side"; | ||
51 | +export default { | ||
52 | + name: "sideArticle", | ||
53 | + components: {}, | ||
54 | + props: { | ||
55 | + sideClassify: { | ||
56 | + type: Number, | ||
57 | + default: 1, | ||
58 | + }, | ||
59 | + }, | ||
60 | + computed: { | ||
61 | + getActiveColor() { | ||
62 | + return (index) => (index < 3 ? "#FF6701" : "#b1b1b1"); | ||
63 | + }, | ||
64 | + }, | ||
65 | + data() { | ||
66 | + return { | ||
67 | + sideType, | ||
68 | + BROWSE_STATUS, | ||
69 | + loading: false, | ||
70 | + blogList: [], | ||
71 | + pageindex: 1, | ||
72 | + pagesize: 5, | ||
73 | + total: 0, | ||
74 | + }; | ||
75 | + }, | ||
76 | + watch: {}, | ||
77 | + created() { | ||
78 | + this.getBlogList(); | ||
79 | + }, | ||
80 | + mounted() { }, | ||
81 | + beforeDestroy() { }, | ||
82 | + methods: { | ||
83 | + goto(id) { | ||
84 | + this.$router.push({ | ||
85 | + path: `/article/detail/${id}`, | ||
86 | + query: { | ||
87 | + sortBy: sortType[this.sideClassify], | ||
88 | + pageindex: this.pageindex, | ||
89 | + pagesize: this.pagesize, | ||
90 | + }, | ||
91 | + }); | ||
92 | + }, | ||
93 | + getBlogList() { | ||
94 | + let params = { | ||
95 | + sortBy: sortType[this.sideClassify], | ||
96 | + pageindex: this.pageindex, | ||
97 | + pagesize: this.pagesize, | ||
98 | + }; | ||
99 | + this.loading = true; | ||
100 | + return apiGetBlogList(params) | ||
101 | + .then((res) => { | ||
102 | + let { list, total } = res.data; | ||
103 | + this.blogList = list; | ||
104 | + this.total = total; | ||
105 | + }) | ||
106 | + .catch((err) => { | ||
107 | + console.log(err); | ||
108 | + }) | ||
109 | + .finally(() => { | ||
110 | + this.loading = false; | ||
111 | + }); | ||
112 | + }, | ||
113 | + }, | ||
114 | +}; | ||
115 | +</script> | ||
116 | + | ||
117 | +<style lang="less" scoped> | ||
118 | +.side-article { | ||
119 | + background-color: #fff; | ||
120 | + margin-top: 20px; | ||
121 | + border-radius: 6px; | ||
122 | + .side-list { | ||
123 | + padding: 10px; | ||
124 | + .list-item { | ||
125 | + border-bottom: solid 1px @borderColor; | ||
126 | + font-size: 14px; | ||
127 | + margin-bottom: 10px; | ||
128 | + padding-bottom: 10px; | ||
129 | + &:hover .item-title .title { | ||
130 | + color: @mainColor; | ||
131 | + } | ||
132 | + &:hover .item-content .item-right .item-desc { | ||
133 | + color: @mainColor; | ||
134 | + } | ||
135 | + &:hover .item-content .item-right .item-func .func-box { | ||
136 | + color: @mainColor; | ||
137 | + } | ||
138 | + &:hover img { | ||
139 | + transform: scale(1.2); | ||
140 | + } | ||
141 | + .item-title { | ||
142 | + display: flex; | ||
143 | + align-items: center; | ||
144 | + margin-bottom: 10px; | ||
145 | + cursor: pointer; | ||
146 | + .index { | ||
147 | + color: #fff; | ||
148 | + font-size: 12px; | ||
149 | + margin-right: 4px; | ||
150 | + font-weight: normal; | ||
151 | + width: 16px; | ||
152 | + height: 16px; | ||
153 | + display: flex; | ||
154 | + justify-content: center; | ||
155 | + align-items: center; | ||
156 | + } | ||
157 | + .title { | ||
158 | + font-size: 14px; | ||
159 | + color: @thinColor; | ||
160 | + font-weight: bold; | ||
161 | + .ellipsis-line-clamp(); | ||
162 | + } | ||
163 | + } | ||
164 | + .item-content { | ||
165 | + display: flex; | ||
166 | + align-items: flex-start; | ||
167 | + .item-img { | ||
168 | + width: 100px; | ||
169 | + height: 70px; | ||
170 | + margin-right: 10px; | ||
171 | + overflow: hidden; | ||
172 | + img { | ||
173 | + width: 100%; | ||
174 | + height: 100%; | ||
175 | + border-radius: 4px; | ||
176 | + transition: 0.4s ease all; | ||
177 | + object-fit: cover; | ||
178 | + } | ||
179 | + } | ||
180 | + .item-right { | ||
181 | + flex: 1; | ||
182 | + height: 70px; | ||
183 | + display: flex; | ||
184 | + flex-direction: column; | ||
185 | + justify-content: space-between; | ||
186 | + .item-desc { | ||
187 | + color: @assistColor; | ||
188 | + line-height: 24px; | ||
189 | + .ellipsis-line-clamp(2); | ||
190 | + } | ||
191 | + .item-func { | ||
192 | + margin-top: 10px; | ||
193 | + display: flex; | ||
194 | + justify-content: center; | ||
195 | + align-items: center; | ||
196 | + .func-box { | ||
197 | + display: flex; | ||
198 | + align-items: center; | ||
199 | + padding-left: 24px; | ||
200 | + color: @assistColor; | ||
201 | + .box-text { | ||
202 | + padding-left: 4px; | ||
203 | + } | ||
204 | + } | ||
205 | + } | ||
206 | + } | ||
207 | + } | ||
208 | + } | ||
209 | + } | ||
210 | +} | ||
211 | +</style> |
rf-blog/code/client/src/components/top.vue
0 → 100644
1 | +<template> | ||
2 | + <div class="top-wrapper" v-show="showTop" @click="goTop"> | ||
3 | + <img src="../images/back-top.png" alt="Top" /> | ||
4 | + </div> | ||
5 | +</template> | ||
6 | + | ||
7 | +<script> | ||
8 | +export default { | ||
9 | + name: "top", | ||
10 | + components: {}, | ||
11 | + props: {}, | ||
12 | + computed: { | ||
13 | + showTop() { | ||
14 | + return this.scrollTop > 300; | ||
15 | + }, | ||
16 | + }, | ||
17 | + data() { | ||
18 | + return { | ||
19 | + scrollTop: 0, | ||
20 | + }; | ||
21 | + }, | ||
22 | + watch: {}, | ||
23 | + created() { }, | ||
24 | + mounted() { | ||
25 | + window.addEventListener("scroll", () => { | ||
26 | + this.scrollTop = | ||
27 | + document.documentElement.scrollTop || | ||
28 | + document.body.scrollTop; | ||
29 | + }); | ||
30 | + }, | ||
31 | + beforeDestroy() { }, | ||
32 | + methods: { | ||
33 | + goTop() { | ||
34 | + let back = setInterval(() => { | ||
35 | + if (document.documentElement.scrollTop || document.body.scrollTop) { | ||
36 | + document.documentElement.scrollTop -= 80; | ||
37 | + document.body.scrollTop -= 80; | ||
38 | + } else { | ||
39 | + clearInterval(back); | ||
40 | + } | ||
41 | + }, 20); | ||
42 | + }, | ||
43 | + }, | ||
44 | +}; | ||
45 | +</script> | ||
46 | + | ||
47 | +<style lang="less" scoped> | ||
48 | +.top-wrapper { | ||
49 | + img { | ||
50 | + position: fixed; | ||
51 | + bottom: 120px; | ||
52 | + right: 120px; | ||
53 | + width: 80px; | ||
54 | + object-fit: contain; | ||
55 | + border-radius: 50%; | ||
56 | + cursor: pointer; | ||
57 | + } | ||
58 | +} | ||
59 | +</style> |
rf-blog/code/client/src/constant/side.js
0 → 100644
1 | +// 侧边栏文章类别 | ||
2 | +const BROWSE_STATUS = 1; // 点击排行 | ||
3 | +const RECOMMEND_STATUS = 2; // 站长推荐 | ||
4 | +const sideType = { | ||
5 | + [BROWSE_STATUS]: "点击排行", | ||
6 | + [RECOMMEND_STATUS]: "站长推荐", | ||
7 | +}; | ||
8 | +const sortType = { | ||
9 | + [BROWSE_STATUS]: "pv", | ||
10 | + [RECOMMEND_STATUS]: "level", | ||
11 | +}; | ||
12 | + | ||
13 | +export { BROWSE_STATUS, RECOMMEND_STATUS, sideType, sortType }; |
rf-blog/code/client/src/filters/index.js
0 → 100644
1 | +/** | ||
2 | + * 时间日期格式化 | ||
3 | + * 用法 formatTime(new Date(), 'yyyy-MM-dd hh:mm:ss') | ||
4 | + * @param time | ||
5 | + * @param fmt | ||
6 | + */ | ||
7 | +export function formatTime(time, fmt) { | ||
8 | + time = parseInt(time); | ||
9 | + if (!time) { | ||
10 | + return ""; | ||
11 | + } | ||
12 | + const date = new Date(time); | ||
13 | + let o = { | ||
14 | + "M+": date.getMonth() + 1, // 月份 | ||
15 | + "d+": date.getDate(), // 日 | ||
16 | + "h+": date.getHours(), // 小时 | ||
17 | + "m+": date.getMinutes(), // 分 | ||
18 | + "s+": date.getSeconds(), // 秒 | ||
19 | + "q+": Math.floor((date.getMonth() + 3) / 3), // 季度 | ||
20 | + S: date.getMilliseconds(), // 毫秒 | ||
21 | + }; | ||
22 | + if (/(y+)/.test(fmt)) { | ||
23 | + fmt = fmt.replace( | ||
24 | + RegExp.$1, | ||
25 | + (date.getFullYear() + "").substr(4 - RegExp.$1.length) | ||
26 | + ); | ||
27 | + } | ||
28 | + for (let k in o) { | ||
29 | + if (new RegExp("(" + k + ")").test(fmt)) { | ||
30 | + fmt = fmt.replace( | ||
31 | + RegExp.$1, | ||
32 | + RegExp.$1.length === 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length) | ||
33 | + ); | ||
34 | + } | ||
35 | + } | ||
36 | + return fmt; | ||
37 | +} | ||
38 | + | ||
39 | +/** | ||
40 | + * 数字转成 k、w 方式 | ||
41 | + * @param num | ||
42 | + */ | ||
43 | +export function formatNumber(num) { | ||
44 | + return num >= 1e3 && num < 1e4 | ||
45 | + ? (num / 1e3).toFixed(1) + "k" | ||
46 | + : num >= 1e4 | ||
47 | + ? (num / 1e4).toFixed(1) + "w" | ||
48 | + : num; | ||
49 | +} |
rf-blog/code/client/src/images/1.png
0 → 100644
124 KB
rf-blog/code/client/src/images/avatar.png
0 → 100644
3.05 KB
rf-blog/code/client/src/images/back-top.png
0 → 100644
2.43 KB
rf-blog/code/client/src/images/bg4.jpg
0 → 100644
16.4 KB
rf-blog/code/client/src/images/blueprint.png
0 → 100644
116 Bytes
92.4 KB
15.4 KB
33.8 KB
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDC5D" d="M5 21c0 2.209-1.119 4-2.5 4S0 23.209 0 21s1.119-4 2.5-4S5 18.791 5 21z"/><path fill="#FFDC5D" d="M3 18.562C3 10.037 8.373 3.125 15 3.125s12 6.912 12 15.438C27 27.088 21.627 34 15 34S3 27.088 3 18.562z"/><path fill="#DD2E44" d="M20 0c-.249 0-.478.007-.713.012C19.19.01 19.097 0 19 0 9 0 2 4.582 2 9s6.373 4 13 4c4.442 0 7.648 0 9.966-.086L25 13l6 15h2s.343-3.055 1-7c1-6 .533-21-14-21z"/><path fill="#FFDC5D" d="M30 21c0 2.209-1.119 4-2.5 4S25 23.209 25 21s1.119-4 2.5-4 2.5 1.791 2.5 4z"/><path fill="#662113" d="M10 21c-.552 0-1-.447-1-1v-2c0-.552.448-1 1-1s1 .448 1 1v2c0 .553-.448 1-1 1zm10 0c-.553 0-1-.447-1-1v-2c0-.552.447-1 1-1s1 .448 1 1v2c0 .553-.447 1-1 1z"/><path fill="#B7755E" d="M16 26h-2c-.552 0-1-.447-1-1s.448-1 1-1h2c.552 0 1 .447 1 1s-.448 1-1 1z"/><path fill="#E6E7E8" d="M27 25c0-2-2.293-.707-3 0-1 1-3 3-5 2-2.828-1.414-4-1-4-1s-1.171-.414-4 1c-2 1-4-1-5-2-.707-.707-3-2-3 0s1 2 1 2c-1 2 1 3 1 3 0 3 3 3 3 3 0 3 4 2 4 2 1 1 3 1 3 1s2 0 3-1c0 0 4 1 4-2 0 0 3 0 3-3 0 0 2-1 1-3 0 0 1 0 1-2z"/><path fill="#FFDC5D" d="M15 28c7 0 4 2 0 2s-7-2 0-2z"/><ellipse fill="#D1D3D4" cx="3" cy="14" rx="2" ry="4"/><ellipse fill="#D1D3D4" cx="26" cy="14" rx="2" ry="4"/><circle fill="#F1F2F2" cx="32" cy="29" r="4"/><path fill="#F1F2F2" d="M29 12c0 1.104-.896 2-2 2H2c-1.104 0-2-.896-2-2v-1c0-1.104.896-2 2-2h25c1.104 0 2 .896 2 2v1z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCB4E" d="M33 17c1.072-6.084 1.262-15.048 0-15.864C31.738.322 22.928 3.353 21.086 7.4 20.081 7.132 18 7 18 7s-2.013.132-3.017.399C13.14 3.352 4.261.321 3 1.136 1.738 1.952 1.926 10.916 3 17c0 0-.967 1.979-.967 8.95l16-3.967 16 4C34.033 18.979 33 17 33 17z"/><path fill="#FFD882" d="M23.946 19.282c-2.085 0-4.273.477-5.913 1.281-1.639-.805-3.827-1.281-5.912-1.281-9.932 0-10.088 5.1-10.088 6.664C2.033 27.505 4 35.979 18 35.979s16.033-8.441 16.033-10c0-1.564-.156-6.697-10.087-6.697z"/><path fill="#F28F20" d="M23.406 8.054c2.17-2.383 6.681-4.172 7.607-3.945.752.182.635 6.387.031 9.938-2.562-4.251-7.638-5.993-7.638-5.993zm-10.746 0c-2.168-2.383-6.68-4.172-7.606-3.945-.754.182-.637 6.387-.031 9.938 2.563-4.251 7.637-5.993 7.637-5.993z"/><path fill="#FAAA35" d="M22.04 20c0-4.693-1.809-13-4.04-13s-4.04 8.307-4.04 13c0 4.695 1.809 2 4.04 2s4.04 2.695 4.04-2z"/><path fill="#2A2F33" d="M15.019 16.999c0 1.105-.904 2-2.019 2s-2.019-.895-2.019-2c0-1.104.904-1.998 2.019-1.998s2.019.895 2.019 1.998zm10.02.001c0 1.105-.904 2-2.02 2C21.904 19 21 18.105 21 17c0-1.104.904-1.998 2.02-1.998 1.115 0 2.019.894 2.019 1.998z"/><path fill="#F28F20" d="M23.804 28.895c-3.488.696-4.55-.785-4.784-1.229V25c0-.553-.447-1-1-1-.553 0-1 .447-1 1v2.659c-.246.452-1.338 1.931-4.823 1.236-.548-.113-1.069.243-1.177.784-.108.542.243 1.068.784 1.177.79.158 1.495.227 2.127.227 2.078 0 3.339-.741 4.081-1.473.735.733 1.986 1.473 4.058 1.473.631 0 1.337-.068 2.126-.227.541-.108.893-.635.784-1.177-.107-.541-.629-.897-1.176-.784z"/><path fill="#292F33" d="M22.02 21.592c0 1.758-3.216 3.978-4.02 3.978-.803 0-4.019-2.221-4.019-3.978C13.981 19.832 16.225 20 18 20s4.02-.168 4.02 1.592z"/><path fill="#F39120" d="M34.021 31.935c-.277 0-.553-.115-.751-.339-.03-.035-3.181-3.502-10.41-4.624-.546-.085-.92-.596-.835-1.142.085-.546.597-.915 1.142-.835.366.057.724.119 1.072.187 7.242 1.404 10.399 4.939 10.536 5.096.362.416.319 1.048-.097 1.411-.189.165-.423.246-.657.246z"/><path fill="#F39120" d="M23.014 26.983c-.406 0-.789-.25-.939-.653-.191-.519.074-1.094.592-1.285 5.477-2.023 12.161-.189 12.45-.108.532.148.843.699.695 1.23-.146.532-.697.843-1.229.697-.064-.018-6.358-1.739-11.223.058-.114.042-.231.061-.346.061zM1.988 31.935c.277 0 .553-.115.751-.339.03-.035 3.181-3.502 10.41-4.624.546-.085.92-.596.835-1.142-.085-.546-.597-.915-1.142-.835-.366.057-.724.119-1.072.187-7.242 1.404-10.399 4.939-10.536 5.096-.362.416-.319 1.048.097 1.411.19.165.424.246.657.246z"/><path fill="#F39120" d="M12.996 26.983c.406 0 .789-.25.938-.653.191-.519-.074-1.094-.592-1.285-5.477-2.023-12.161-.189-12.45-.108-.532.148-.843.699-.695 1.23.146.532.697.843 1.229.697.064-.018 6.358-1.739 11.223.058.115.042.232.061.347.061z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DD2E44" d="M15 30v3s0 3 3 3 3-3 3-3v-3h-6z"/><path fill="#272B2B" d="M14 2c.041-3-14-2-14 8 0 4 0 14 3 14C7 24 13.945 6 14 2zm8 0c-.041-3 14-2 14 8 0 4 0 14-3 14-4 0-10.945-18-11-22z"/><path fill="#CCD6DD" d="M31 22c0 7-4 7-4 7H9s-4 0-4-7C5 22 6 0 18 0s13 22 13 22z"/><path fill="#8899A6" d="M23 22.025V22H13v.025c-2.803.253-5 2.606-5 5.475 0 3.037 2.462 5.5 5.5 5.5 1.862 0 3.505-.928 4.5-2.344.995 1.416 2.638 2.344 4.5 2.344 3.038 0 5.5-2.463 5.5-5.5 0-2.868-2.196-5.222-5-5.475z"/><path fill="#272B2B" d="M11 16s0-2 2-2 2 2 2 2v2s0 2-2 2-2-2-2-2v-2zm10 0s0-2 2-2 2 2 2 2v2s0 2-2 2-2-2-2-2v-2zm-6 8c-1 1 2 4 3 4s4-3 3-4-5-1-6 0z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDC5D" d="M30 20.145s.094-2.362-1.791-3.068c-1.667-.625-2.309.622-2.309.622s.059-1.913-1.941-2.622c-1.885-.667-2.75.959-2.75.959s-.307-1.872-2.292-2.417C17.246 13.159 16 14.785 16 14.785V2.576C16 1.618 15.458.001 13.458 0S11 1.66 11 2.576v20.5c0 1-1 1-1 0V20.41c0-3.792-2.037-6.142-2.75-6.792-.713-.65-1.667-.98-2.82-.734-1.956.416-1.529 1.92-.974 3.197 1.336 3.078 2.253 7.464 2.533 9.538.79 5.858 5.808 10.375 11.883 10.381 6.626.004 12.123-5.298 12.128-11.924v-3.931z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDC5D" d="M4 15.894s-.093 2.362 1.792 3.068c1.667.625 2.309-.622 2.309-.622s-.059 1.914 1.941 2.622c1.885.668 2.75-.958 2.75-.958s.307 1.871 2.292 2.417C16.755 22.88 18 21.254 18 21.254v12.208c0 .959.542 2.575 2.543 2.576 2 .002 2.457-1.659 2.457-2.576v-20.5c0-1 1-1 1 0v2.666c0 3.792 2.038 6.143 2.751 6.792.713.65 1.667.979 2.82.734 1.956-.415 1.529-1.92.975-3.197-1.337-3.078-2.254-7.464-2.533-9.538C27.222 4.562 22.204.044 16.129.038 9.503.034 4.005 5.336 4 11.962v3.932z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDC5D" d="M20.145 31s-2.436-.167-3.068-1.792c-.646-1.659.622-2.309.622-2.309s-1.914.059-2.622-1.941c-.668-1.885.958-2.75.958-2.75s-1.871-.307-2.417-2.292C13.158 18.245 14.784 17 14.784 17H2.576C1.617 17 .001 16.458 0 14.457-.002 12.457 1.659 12 2.576 12h20.5c1 0 1-1 0-1H20.41c-3.792 0-6.143-2.038-6.792-2.751-.65-.713-.98-1.667-.734-2.82.415-1.956 1.92-1.529 3.197-.975 3.078 1.337 7.464 2.254 9.538 2.533 5.858.791 10.375 5.809 10.381 11.884.004 6.626-5.298 12.124-11.924 12.129h-3.931z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDC5D" d="M15.856 31s2.394-.208 3.068-1.792c.697-1.639-.622-2.309-.622-2.309s1.914.059 2.622-1.941c.668-1.885-.958-2.75-.958-2.75s1.871-.307 2.417-2.292C22.842 18.245 21.216 17 21.216 17h12.208c.959 0 2.575-.542 2.576-2.543.002-2-1.659-2.457-2.576-2.457h-20.5c-1 0-1-1 0-1h2.666c3.792 0 6.143-2.038 6.792-2.751.65-.713.979-1.667.734-2.82-.415-1.956-1.92-1.529-3.197-.975-3.078 1.337-7.464 2.254-9.538 2.533C4.523 7.778.006 12.796 0 18.871-.004 25.497 5.298 30.995 11.924 31h3.932z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDC5D" d="M32.942 11.244c-.041-.609-.284-1.18-.674-1.644l-.357-2.057c-.376-2.006-2.232-3.386-4.262-3.169L4.259 8.11C2.377 8.312.909 9.833.774 11.721l1.761 11.147c.305 2.169 2.151 3.788 4.341 3.813.677.008 1.238.017 1.463.027l9.483.463c-.363.483-.822 1.08-.822 1.718v.052c0 1.581 1.771 3.06 3.353 3.06h7.282c.76 0 1.488-.4 2.025-.938l4.424-4.472c.583-.584.887-1.416.832-2.24l-1.974-13.107z"/><path fill="#EF9645" d="M8.217 26.623c-.474 0-.895-.338-.983-.821L5.174 14.47c-.099-.543.262-1.064.805-1.163.546-.097 1.064.262 1.163.805l2.06 11.332c.099.543-.262 1.063-.805 1.162-.061.012-.121.017-.18.017zm6.181 0c-.517 0-.955-.398-.996-.923l-1.03-13.393c-.043-.551.37-1.031.92-1.074.549-.044 1.031.371 1.074.92l1.03 13.392c.043.551-.37 1.032-.92 1.074-.026.003-.053.004-.078.004zm7.207 1.106c-.508 0-.757-.001-.951-1.062l-.044-.003c.001-.055.007-.108.017-.161-.174-1.068-.309-3.069-.561-6.817-.235-3.49-.486-7.552-.486-8.485 0-.552.447-1 1-1 .553 0 1 .448 1 1 0 1.533.795 13.324.981 15.145.032.097.049.2.049.308 0 .266-.108.557-.295.744s-.444.331-.71.331z"/><path fill="#EF9645" d="M25.178 28.684H18.52c-.552 0-1-.447-1-1s.448-1 1-1h6.658c1.458 0 2.644-1.186 2.644-2.644V11.201c0-.552.447-1 1-1s1 .448 1 1V24.04c-.001 2.561-2.084 4.644-4.644 4.644z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#EF9645" d="M24.997 28.5c-1.185 0-2.237-.846-2.457-2.053l-4-22c-.247-1.358.654-2.66 2.012-2.907 1.358-.251 2.66.654 2.907 2.012l4 22c.247 1.358-.654 2.66-2.013 2.907-.15.028-.3.041-.449.041z"/><path fill="#FFDC5D" d="M28.375 24.765c.239-.745.13-1.591-.375-2.265-.059-.078-.44-.585-1.017-1.34.005-.052.017-.112.017-.16 0-.458-1.913-2.623-3.74-4.586-1.587-1.965-3.261-3.951-4.492-5.182l-1.274-1.274-1.612.806c-5.718 2.859-8.647 3.855-8.672 3.864-1.31.437-2.018 1.852-1.581 3.162.437 1.31 1.852 2.015 3.162 1.582.117-.039 2.666-.899 7.65-3.311 1.094 1.23 2.378 2.795 3.574 4.296l.704 1.174c.169.282.146.639-.061.896l-3.513 4.392c-.095.119-.222.207-.365.255l-2.531.844c-.161.054-.336.054-.497 0l-4.73-1.576c-.676-2.082-.533-4.102-.531-4.124.12-1.376-.899-2.588-2.274-2.707-1.372-.128-2.587.897-2.707 2.273-.022.261-.51 6.424 3.313 10.594 2.208 2.408 5.296 3.63 9.178 3.63.66 0 1.283.009 1.871.018.529.008 1.042.016 1.537.016 2.764 0 5.004-.231 6.738-1.941 1.649-1.626 2.354-4.195 2.354-8.592-.001-.263-.052-.508-.126-.744z"/><path fill="#EF9645" d="M27.001 21c-.384 0-.749-.221-.915-.594l-4-9c-.224-.505.003-1.096.508-1.32.506-.226 1.096.003 1.32.507l4 9c.224.505-.003 1.096-.508 1.32-.132.06-.269.087-.405.087z"/><path fill="#FFDC5D" d="M24.766 34.38l-1.531-4.76s-.066.011-.175.066c.017-.009 1.821-.995 2.461-6.003.775-6.075-.774-9.6-.79-9.634l-.093-.231-3.5-10.104c-.452-1.305.239-2.729 1.544-3.181 1.303-.451 2.729.24 3.181 1.544l3.469 10.013c.377.887 2.035 5.285 1.148 12.226-1.042 8.163-4.943 9.816-5.714 10.064z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDB5E" d="M34.956 17.916c0-.503-.12-.975-.321-1.404-1.341-4.326-7.619-4.01-16.549-4.221-1.493-.035-.639-1.798-.115-5.668.341-2.517-1.282-6.382-4.01-6.382-4.498 0-.171 3.548-4.148 12.322-2.125 4.688-6.875 2.062-6.875 6.771v10.719c0 1.833.18 3.595 2.758 3.885C8.195 34.219 7.633 36 11.238 36h18.044c1.838 0 3.333-1.496 3.333-3.334 0-.762-.267-1.456-.698-2.018 1.02-.571 1.72-1.649 1.72-2.899 0-.76-.266-1.454-.696-2.015 1.023-.57 1.725-1.649 1.725-2.901 0-.909-.368-1.733-.961-2.336.757-.611 1.251-1.535 1.251-2.581z"/><path fill="#EE9547" d="M23.02 21.249h8.604c1.17 0 2.268-.626 2.866-1.633.246-.415.109-.952-.307-1.199-.415-.247-.952-.108-1.199.307-.283.479-.806.775-1.361.775h-8.81c-.873 0-1.583-.71-1.583-1.583s.71-1.583 1.583-1.583H28.7c.483 0 .875-.392.875-.875s-.392-.875-.875-.875h-5.888c-1.838 0-3.333 1.495-3.333 3.333 0 1.025.475 1.932 1.205 2.544-.615.605-.998 1.445-.998 2.373 0 1.028.478 1.938 1.212 2.549-.611.604-.99 1.441-.99 2.367 0 1.12.559 2.108 1.409 2.713-.524.589-.852 1.356-.852 2.204 0 1.838 1.495 3.333 3.333 3.333h5.484c1.17 0 2.269-.625 2.867-1.632.247-.415.11-.952-.305-1.199-.416-.245-.953-.11-1.199.305-.285.479-.808.776-1.363.776h-5.484c-.873 0-1.583-.71-1.583-1.583s.71-1.583 1.583-1.583h6.506c1.17 0 2.27-.626 2.867-1.633.247-.416.11-.953-.305-1.199-.419-.251-.954-.11-1.199.305-.289.487-.799.777-1.363.777h-7.063c-.873 0-1.583-.711-1.583-1.584s.71-1.583 1.583-1.583h8.091c1.17 0 2.269-.625 2.867-1.632.247-.415.11-.952-.305-1.199-.417-.246-.953-.11-1.199.305-.289.486-.799.776-1.363.776H23.02c-.873 0-1.583-.71-1.583-1.583s.709-1.584 1.583-1.584z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDB5E" d="M34.956 18.084c0 .503-.12.975-.321 1.404-1.341 4.326-7.619 4.01-16.549 4.221-1.493.035-.639 1.798-.115 5.668.341 2.517-1.282 6.382-4.01 6.382-4.498 0-.171-3.548-4.148-12.322-2.125-4.688-6.875-2.062-6.875-6.771V5.948c0-1.833.18-3.595 2.758-3.885C8.195 1.781 7.633 0 11.238 0h18.044c1.838 0 3.333 1.496 3.333 3.334 0 .762-.267 1.456-.698 2.018 1.02.571 1.72 1.649 1.72 2.899 0 .76-.266 1.454-.696 2.015 1.023.57 1.725 1.649 1.725 2.901 0 .909-.368 1.733-.961 2.336.757.611 1.251 1.535 1.251 2.581z"/><path fill="#EE9547" d="M23.02 14.751h8.604c1.17 0 2.268.626 2.866 1.633.246.415.109.952-.307 1.199-.415.247-.952.108-1.199-.307-.283-.479-.806-.775-1.361-.775h-8.81c-.873 0-1.583.71-1.583 1.583s.71 1.583 1.583 1.583H28.7c.483 0 .875.392.875.875s-.392.875-.875.875h-5.888c-1.838 0-3.333-1.495-3.333-3.333 0-1.025.475-1.932 1.205-2.544-.615-.605-.998-1.445-.998-2.373 0-1.028.478-1.938 1.212-2.549-.611-.604-.99-1.441-.99-2.367 0-1.12.559-2.108 1.409-2.713-.524-.589-.852-1.356-.852-2.204 0-1.838 1.495-3.333 3.333-3.333h5.484c1.17 0 2.269.625 2.867 1.632.247.415.11.952-.305 1.199-.416.245-.953.11-1.199-.305-.285-.479-.808-.776-1.363-.776h-5.484c-.873 0-1.583.71-1.583 1.583s.71 1.583 1.583 1.583h6.506c1.17 0 2.27.626 2.867 1.633.247.416.11.953-.305 1.199-.419.251-.954.11-1.199-.305-.289-.487-.799-.777-1.363-.777h-7.063c-.873 0-1.583.711-1.583 1.584s.71 1.583 1.583 1.583h8.091c1.17 0 2.269.625 2.867 1.632.247.415.11.952-.305 1.199-.417.246-.953.11-1.199-.305-.289-.486-.799-.776-1.363-.776H23.02c-.873 0-1.583.71-1.583 1.583s.709 1.584 1.583 1.584z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#EF9645" d="M32.302 24.347c-.695-1.01-.307-2.47-.48-4.082-.178-2.63-1.308-5.178-3.5-7.216l-7.466-6.942s-1.471-1.369-2.841.103c-1.368 1.471.104 2.84.104 2.84l3.154 2.934 2.734 2.542s-.685.736-3.711-2.078l-10.22-9.506s-1.473-1.368-2.842.104c-1.368 1.471.103 2.84.103 2.84l9.664 8.989c-.021-.02-.731.692-.744.68L5.917 5.938s-1.472-1.369-2.841.103c-1.369 1.472.103 2.84.103 2.84L13.52 18.5c.012.012-.654.764-.634.783l-8.92-8.298s-1.472-1.369-2.841.103c-1.369 1.472.103 2.841.103 2.841l9.484 8.82c.087.081-.5.908-.391 1.009l-6.834-6.356s-1.472-1.369-2.841.104c-1.369 1.472.103 2.841.103 2.841L11.896 30.71c1.861 1.731 3.772 2.607 6.076 2.928.469.065 1.069.065 1.315.096.777.098 1.459.374 2.372.934 1.175.72 2.938 1.02 3.951-.063l3.454-3.695 3.189-3.412c1.012-1.082.831-2.016.049-3.151z"/><path d="M1.956 35.026c-.256 0-.512-.098-.707-.293-.391-.391-.391-1.023 0-1.414L4.8 29.77c.391-.391 1.023-.391 1.414 0s.391 1.023 0 1.414l-3.551 3.55c-.195.195-.451.292-.707.292zm6.746.922c-.109 0-.221-.018-.331-.056-.521-.182-.796-.752-.613-1.274l.971-2.773c.182-.521.753-.795 1.274-.614.521.183.796.753.613 1.274l-.971 2.773c-.144.412-.53.67-.943.67zm-7.667-7.667c-.412 0-.798-.257-.943-.667-.184-.521.089-1.092.61-1.276l2.495-.881c.523-.18 1.092.091 1.276.61.184.521-.089 1.092-.61 1.276l-2.495.881c-.111.039-.223.057-.333.057zm29.46-21.767c-.256 0-.512-.098-.707-.293-.391-.391-.391-1.024 0-1.415l3.552-3.55c.391-.39 1.023-.39 1.414 0s.391 1.024 0 1.415l-3.552 3.55c-.195.196-.451.293-.707.293zm-4.164-1.697c-.109 0-.221-.019-.33-.057-.521-.182-.796-.752-.614-1.274l.97-2.773c.183-.521.752-.796 1.274-.614.521.182.796.752.614 1.274l-.97 2.773c-.144.413-.531.671-.944.671zm6.143 5.774c-.412 0-.798-.257-.943-.667-.184-.521.09-1.092.61-1.276l2.494-.881c.522-.185 1.092.09 1.276.61.184.521-.09 1.092-.61 1.276l-2.494.881c-.111.039-.223.057-.333.057z" fill="#FA743E"/><path fill="#FFDB5E" d="M35.39 23.822c-.661-1.032-.224-2.479-.342-4.096-.09-2.634-1.133-5.219-3.255-7.33l-7.228-7.189s-1.424-1.417-2.843.008c-1.417 1.424.008 2.842.008 2.842l3.054 3.039 2.646 2.632s-.71.712-3.639-2.202c-2.931-2.915-9.894-9.845-9.894-9.845s-1.425-1.417-2.843.008c-1.418 1.424.007 2.841.007 2.841l9.356 9.31c-.02-.02-.754.667-.767.654L9.64 4.534s-1.425-1.418-2.843.007c-1.417 1.425.007 2.842.007 2.842l10.011 9.962c.012.012-.68.741-.66.761L7.52 9.513s-1.425-1.417-2.843.008.007 2.843.007 2.843l9.181 9.135c.084.083-.53.891-.425.996l-6.616-6.583s-1.425-1.417-2.843.008.007 2.843.007 2.843l10.79 10.732c1.802 1.793 3.682 2.732 5.974 3.131.467.081 1.067.101 1.311.14.773.124 1.445.423 2.34 1.014 1.15.759 2.902 1.118 3.951.07l3.577-3.576 3.302-3.302c1.049-1.05.9-1.99.157-3.15z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDC5D" d="M6 20c0 2.209-1.119 4-2.5 4S1 22.209 1 20s1.119-4 2.5-4S6 17.791 6 20zm29 0c0 2.209-1.119 4-2.5 4S30 22.209 30 20s1.119-4 2.5-4 2.5 1.791 2.5 4z"/><path fill="#FFDC5D" d="M4 20.562c0-8.526 6.268-15.438 14-15.438s14 6.912 14 15.438S25.732 35 18 35 4 29.088 4 20.562z"/><path fill="#662113" d="M12 22c-.552 0-1-.447-1-1v-2c0-.552.448-1 1-1s1 .448 1 1v2c0 .553-.448 1-1 1zm12 0c-.553 0-1-.447-1-1v-2c0-.552.447-1 1-1s1 .448 1 1v2c0 .553-.447 1-1 1z"/><path fill="#C1694F" d="M18 30c-4.188 0-6.357-1.06-6.447-1.105-.494-.247-.694-.848-.447-1.342.247-.492.843-.692 1.337-.449.051.024 1.925.896 5.557.896 3.665 0 5.54-.888 5.559-.897.496-.241 1.094-.034 1.336.457.243.493.045 1.089-.447 1.335C24.356 28.94 22.188 30 18 30zm1-5h-2c-.552 0-1-.447-1-1s.448-1 1-1h2c.553 0 1 .447 1 1s-.447 1-1 1z"/><path fill="#FFAC33" d="M18 .354C8.77.354 3 6.816 3 12.2c0 5.385 1.154 7.539 2.308 5.385l2.308-4.308s3.791-.124 6.099-2.278c0 0-1.071 4 6.594.124 0 0-.166 3.876 5.191-.124 0 0 4.039 1.201 5.191 6.586.32 1.494 2.309 0 2.309-5.385C33 6.816 28.385.354 18 .354z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M29.96 23.087C34 27 34.043 34.021 33.021 34.021s-4.115-1.852-6.068-3.937C25 28 25.203 23.306 25.203 23.306l1.586-4.319c0-.001-.869.187 3.171 4.1z"/><path fill="#FFAC33" d="M26.96 23.087C31 27 31.043 34.021 30.021 34.021s-4.115-1.852-6.068-3.937C22 28 22.203 23.306 22.203 23.306l1.586-4.319c0-.001-.869.187 3.171 4.1zM3 34c-1 0-1-7 3-11s3-4 3-4l2 4s0 5-2 7-5 4-6 4z"/><path fill="#FFAC33" d="M6 34c-1 0-1-7 3-11s3-4 3-4l2 4s0 5-2 7-5 4-6 4z"/><path fill="#FFDC5D" d="M6.914 18.353c-.571-2.134-2.116-3.575-3.45-3.217-1.334.358-1.95 2.378-1.379 4.511.571 2.135 2.116 3.574 3.45 3.217 1.334-.358 1.951-2.378 1.379-4.511zm27.001 1.294c.571-2.134-.046-4.154-1.38-4.512-1.333-.356-2.878 1.083-3.449 3.218-.572 2.134.045 4.153 1.379 4.511 1.334.358 2.879-1.083 3.45-3.217z"/><path fill="#FFDC5D" d="M31 19c0-9.389-5.82-16-13-16S5 9.611 5 19s5.82 15 13 15 13-5.611 13-15z"/><path fill="#DF1F32" d="M18 27.651c-2.42 0-4.274-.687-4.352-.715-.517-.194-.779-.771-.584-1.288.194-.517.769-.779 1.286-.585.016.006 1.61.588 3.65.588 2.041 0 3.635-.582 3.65-.588.516-.194 1.094.071 1.285.587.193.517-.067 1.092-.584 1.286-.077.029-1.93.715-4.351.715z"/><path fill="#C1694F" d="M19 23h-2c-.552 0-1-.447-1-1s.448-1 1-1h2c.553 0 1 .447 1 1s-.447 1-1 1z"/><path fill="#662113" d="M12 20c-.552 0-1-.447-1-1v-2c0-.552.448-1 1-1s1 .448 1 1v2c0 .553-.448 1-1 1zm12 0c-.553 0-1-.447-1-1v-2c0-.552.447-1 1-1s1 .448 1 1v2c0 .553-.447 1-1 1z"/><path fill="#FFAC33" d="M32 10c-2-7-7-9-10-9-2 0-4 2-4 2s-2-2-4-2c-3 0-8 2-10 9-1.648 5.769 1 11 1 11 0-3.001 2-9 7-9s6-4 6-4 .786 4 5.786 4S31 18 31 21c0 0 2.648-5.231 1-11z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDC5D" d="M8 19c0 2.209-1.119 4-2.5 4S3 21.209 3 19s1.119-4 2.5-4S8 16.791 8 19zm25 0c0 2.209-1.119 4-2.5 4S28 21.209 28 19s1.119-4 2.5-4 2.5 1.791 2.5 4z"/><path fill="#FFDC5D" d="M5 20.562c0-8.526 5.82-15.438 13-15.438s13 6.912 13 15.438S25.18 36 18 36 5 29.088 5 20.562z"/><path fill="#662113" d="M13 20c-.552 0-1-.447-1-1v-2c0-.552.448-1 1-1s1 .448 1 1v2c0 .553-.448 1-1 1zm10 0c-.553 0-1-.447-1-1v-2c0-.552.447-1 1-1s1 .448 1 1v2c0 .553-.447 1-1 1z"/><path fill="#C1694F" d="M19 24h-2c-.552 0-1-.447-1-1s.448-1 1-1h2c.553 0 1 .447 1 1s-.447 1-1 1z"/><path fill="#FFAC33" d="M25.274 27.038l-3.294-.941c.003-.034.02-.063.02-.097 0-.553-.447-1-1-1h-6c-.552 0-1 .447-1 1 0 .034.016.063.019.097l-3.294.941c-.531.152-.838.706-.686 1.236.125.44.525.726.961.726.091 0 .184-.013.275-.038l1.931-.552c-.216.293-.274.688-.1 1.037.175.351.528.553.895.553.15 0 .303-.034.446-.105l1.577-.788c.036.326.213.631.529.788.143.071.296.105.446.105.367 0 .72-.202.896-.553l.105-.211.105.211c.176.351.529.553.896.553.15 0 .303-.034.446-.105.315-.157.493-.462.529-.788l1.576.788c.144.071.297.105.447.105.367 0 .72-.202.896-.553.174-.349.116-.744-.1-1.037l1.931.552c.091.025.183.038.275.038.434 0 .835-.286.961-.726.151-.53-.156-1.084-.688-1.236zM18 0c8.615 0 14 6.358 14 11.656 0 5.298-1.077 7.417-2.154 5.298l-2.153-4.238s-6.462 0-8.615-2.12c0 0 3.23 6.358-3.231 0 0 0 1.077 4.239-5.385-1.06 0 0-3.23 2.12-4.308 7.417C5.855 18.423 4 16.954 4 11.656 4 6.357 8.308 0 18 0z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M18 3c6 0 16 3 16 16s0 16-3 16-7-3-13-3-9.915 3-13 3c-3.343 0-3-12-3-16C2 6 12 3 18 3z"/><path fill="#FFDC5D" d="M6 18.562c0-8.526 5.373-15.438 12-15.438s12 6.912 12 15.438S24.627 34 18 34 6 27.088 6 18.562z"/><path fill="#DF1F32" d="M18 30c-2.347 0-3.575-1.16-3.707-1.293-.391-.391-.391-1.023 0-1.414.387-.387 1.013-.39 1.404-.01.051.047.806.717 2.303.717 1.519 0 2.273-.69 2.305-.719.398-.373 1.027-.362 1.408.029.379.393.38 1.011-.006 1.397C21.575 28.84 20.347 30 18 30z"/><path fill="#C1694F" d="M19 25h-2c-.552 0-1-.447-1-1s.448-1 1-1h2c.553 0 1 .447 1 1s-.447 1-1 1z"/><path fill="#FFAC33" d="M3.064 24c-.03-.325-.064-.647-.064-1 0-5 3 .562 3-3 0-3.563 2-4 4-6l3-3s5 3 9 3 8 2 8 6 3-2 3 3c0 .355-.033.673-.058 1h1.049C34 22.523 34 20.868 34 19 34 6 24 1 18 1S2 6 2 19c0 1.158-.028 2.986.012 5h1.052z"/><path d="M13 22c-.552 0-1-.447-1-1v-2c0-.552.448-1 1-1s1 .448 1 1v2c0 .553-.448 1-1 1zm10 0c-.553 0-1-.447-1-1v-2c0-.552.447-1 1-1s1 .448 1 1v2c0 .553-.447 1-1 1z" fill="#662113"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#E1E8ED" d="M36 11c0-1.104-.896-2-2-2s-2 .896-2 2c0 0-.011 3.285-3 3.894V12c0-6.075-4.925-11-11-11S7 5.925 7 12v3.237C1.778 16.806 0 23.231 0 27c0 1.104.896 2 2 2s2-.896 2-2c0 0 .002-3.54 3.336-3.958C7.838 27.883 8.954 33 11 33h1c4 0 3 2 7 2s3-2 6-2 2.395 2 6 2c1.657 0 3-1.343 3-3 0-.675-2.274-4.994-3.755-9.268C35.981 21.348 36 14.58 36 11z"/><circle fill="#292F33" cx="13" cy="12" r="2"/><circle fill="#292F33" cx="23" cy="12" r="4"/><circle fill="#9AAAB4" cx="23" cy="13" r="2"/><path fill="#292F33" d="M22.192 19.491c2.65 1.987 3.591 5.211 2.1 7.199-1.491 1.988-4.849 1.988-7.5 0-2.65-1.987-3.591-5.211-2.1-7.199 1.492-1.989 4.849-1.988 7.5 0z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><g fill="#E75A70"><path d="M13.589 26.521c-.297-.495-.284-1.117.035-1.599l4.395-6.646-5.995-5.139c-.556-.476-.686-1.283-.31-1.911l4.304-7.172c-1.669-1.301-3.755-2.09-6.035-2.09-5.45 0-9.868 4.417-9.868 9.868 0 .772.098 1.52.266 2.241C1.751 22.587 11.216 31.568 18 34.034c.025-.009.052-.022.077-.032l-4.488-7.481z"/><path d="M26.018 1.966c-2.765 0-5.248 1.151-7.037 2.983l-4.042 6.737 6.039 5.176c.574.492.691 1.335.274 1.966l-4.604 6.962 4.161 6.935c6.338-3.529 13.621-11.263 14.809-18.649.17-.721.268-1.469.268-2.241-.001-5.452-4.419-9.869-9.868-9.869z"/></g></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#BF6952" d="M33.541 23.198c.364-1.578.243-3.266-.458-4.946-.678-1.625-1.847-2.91-3.271-3.773.318-1.192.234-2.475-.324-3.75-.841-1.92-2.66-3.201-4.712-3.562.249-.572.329-1.289.036-2.167-1-3-5-1-8-4.999-2.44 1.464-2.97 3.64-2.878 5.487-2.421.412-3.8.936-3.8.936v.002c-1.36.55-2.322 1.883-2.322 3.442 0 .879.318 1.676.828 2.312l-.692.258.001.003c-2.33.871-3.975 2.976-3.975 5.439 0 1.047.3 2.027.82 2.878C1.971 22.027 0 24.781 0 28c0 4.418 3.691 8 8.244 8 3.269 0 6.559-.703 9.531-1.665C20.018 35.375 23.47 36 28.667 36 32.717 36 36 32.717 36 28.667c0-2.176-.953-4.125-2.459-5.469z"/><ellipse fill="#F5F8FA" cx="13.5" cy="15.5" rx="3.5" ry="4.5"/><ellipse fill="#F5F8FA" cx="23.5" cy="15.5" rx="3.5" ry="4.5"/><ellipse fill="#292F33" cx="14" cy="15.5" rx="2" ry="2.5"/><ellipse fill="#292F33" cx="23" cy="15.5" rx="2" ry="2.5"/><path fill="#292F33" d="M9.447 24.895C9.201 24.402 9.45 24 10 24h18c.55 0 .799.402.553.895C28.553 24.895 26 30 19 30s-9.553-5.105-9.553-5.105z"/><path fill="#F2ABBA" d="M19 26c-2.771 0-5.157.922-6.292 2.256C14.2 29.211 16.253 30 19 30s4.801-.789 6.292-1.744C24.157 26.922 21.771 26 19 26z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDC5D" d="M12.43 22s-.717-3.641.298-10.873c1.4.454 2.814.873 3.272.873 1 0 4-1 4-2s-1-2-1-2l2-1c1-1 0-7-4-7-7 0-9.57 7-9.57 7l.007.011H7.43s-6 10.989-6 20c.065 0-1 5 0 6s5 1 5 1C16.43 38 35 35 35 26c0-13-19.57-10-22.57-4z"/><path fill="#EF9645" d="M19.494 32.252c-3.178 0-5.793-1.283-5.941-1.357-.493-.247-.693-.846-.447-1.34.246-.494.845-.695 1.34-.45.042.021 4.241 2.061 7.957.641 2.055-.785 3.625-2.507 4.669-5.116.205-.515.791-.763 1.3-.558.513.205.763.787.558 1.3-1.263 3.155-3.223 5.258-5.827 6.248-1.216.461-2.451.632-3.609.632z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><path fill="#664500" d="M16 18c-.419 0-.809-.265-.949-.684C14.848 16.717 14.034 15 13 15c-1.062 0-1.888 1.827-2.051 2.316-.175.523-.738.808-1.265.632-.524-.174-.807-.741-.632-1.265C9.177 16.307 10.356 13 13 13s3.823 3.307 3.949 3.684c.175.524-.108 1.091-.632 1.265-.106.034-.213.051-.317.051zm10 0c-.419 0-.809-.265-.948-.684C24.849 16.717 24.033 15 23 15c-1.062 0-1.889 1.827-2.052 2.316-.175.523-.736.808-1.265.632-.523-.174-.807-.741-.632-1.265C19.177 16.307 20.355 13 23 13s3.823 3.307 3.948 3.684c.175.524-.108 1.091-.632 1.265-.105.034-.212.051-.316.051zm-8 4c-3.623 0-6.027-.422-9-1-.679-.131-2 0-2 2 0 4 4.595 9 11 9 6.404 0 11-5 11-9 0-2-1.321-2.132-2-2-2.973.578-5.377 1-9 1z"/><path fill="#FFF" d="M9 23s3 1 9 1 9-1 9-1-1.344 6.75-9 6.75S9 23 9 23z"/><path fill="#664500" d="M18 27.594c-3.596 0-6.272-.372-7.937-.745l-.825-1.871c.823.312 3.889.897 8.763.897 4.954 0 8.037-.616 8.864-.938l-.701 1.842c-1.634.38-4.419.815-8.164.815z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><path fill="#664500" d="M28.457 17.797c-.06-.135-1.499-3.297-4.457-3.297-2.957 0-4.397 3.162-4.457 3.297-.092.207-.032.449.145.591.175.142.426.147.61.014.012-.009 1.262-.902 3.702-.902 2.426 0 3.674.881 3.702.901.088.066.194.099.298.099.11 0 .221-.037.312-.109.177-.142.238-.386.145-.594zm-12 0c-.06-.135-1.499-3.297-4.457-3.297-2.957 0-4.397 3.162-4.457 3.297-.092.207-.032.449.144.591.176.142.427.147.61.014.013-.009 1.262-.902 3.703-.902 2.426 0 3.674.881 3.702.901.088.066.194.099.298.099.11 0 .221-.037.312-.109.178-.142.237-.386.145-.594zM31 16c-.396 0-.772-.238-.929-.629-1.778-4.445-6.223-5.381-6.268-5.391-.541-.108-.893-.635-.784-1.177.108-.542.635-.891 1.177-.784.226.045 5.556 1.168 7.732 6.608.205.513-.045 1.095-.558 1.3-.12.05-.246.073-.37.073zM5 16c-.124 0-.249-.023-.371-.072-.513-.205-.762-.787-.557-1.3 2.176-5.44 7.506-6.563 7.732-6.608.543-.106 1.068.243 1.177.784.108.54-.242 1.066-.781 1.176-.185.038-4.506.98-6.271 5.391-.157.391-.533.629-.929.629zm13 6c-3.623 0-6.027-.422-9-1-.679-.131-2 0-2 2 0 4 4.595 9 11 9 6.404 0 11-5 11-9 0-2-1.321-2.132-2-2-2.973.578-5.377 1-9 1z"/><path fill="#FFF" d="M9 23s3 1 9 1 9-1 9-1-2 4-9 4-9-4-9-4z"/><path fill="#5DADEC" d="M10.847 28.229c-.68 2.677-3.4 4.295-6.077 3.615-2.676-.679-4.295-3.399-3.616-6.076.679-2.677 6.337-8.708 7.307-8.462.97.247 3.065 8.247 2.386 10.923zm14.286 0c.68 2.677 3.4 4.295 6.077 3.615 2.677-.679 4.296-3.399 3.616-6.076-.68-2.677-6.338-8.708-7.308-8.462-.968.247-3.064 8.247-2.385 10.923z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><ellipse fill="#664500" cx="11.5" cy="12.5" rx="2.5" ry="5.5"/><ellipse fill="#664500" cx="24.5" cy="12.5" rx="2.5" ry="5.5"/><path fill="#664500" d="M18 22c-3.623 0-6.027-.422-9-1-.679-.131-2 0-2 2 0 4 4.595 9 11 9 6.404 0 11-5 11-9 0-2-1.321-2.132-2-2-2.973.578-5.377 1-9 1z"/><path fill="#FFF" d="M9 23s3 1 9 1 9-1 9-1-2 4-9 4-9-4-9-4z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><path fill="#664500" d="M28.457 17.797c-.06-.135-1.499-3.297-4.457-3.297-2.957 0-4.397 3.162-4.457 3.297-.092.207-.032.449.145.591.175.142.426.147.61.014.012-.009 1.262-.902 3.702-.902 2.426 0 3.674.881 3.702.901.088.066.194.099.298.099.11 0 .221-.037.312-.109.177-.142.238-.386.145-.594zm-12 0c-.06-.135-1.499-3.297-4.457-3.297-2.957 0-4.397 3.162-4.457 3.297-.092.207-.032.449.144.591.176.142.427.147.61.014.013-.009 1.262-.902 3.703-.902 2.426 0 3.674.881 3.702.901.088.066.194.099.298.099.11 0 .221-.037.312-.109.178-.142.237-.386.145-.594zM18 22c-3.623 0-6.027-.422-9-1-.679-.131-2 0-2 2 0 4 4.595 9 11 9 6.404 0 11-5 11-9 0-2-1.321-2.132-2-2-2.973.578-5.377 1-9 1z"/><path fill="#FFF" d="M9 23s3 1 9 1 9-1 9-1-2 4-9 4-9-4-9-4z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><ellipse fill="#664500" cx="11.5" cy="16.5" rx="2.5" ry="3.5"/><path fill="#664500" d="M28.457 17.797c-.06-.135-1.499-3.297-4.457-3.297-2.957 0-4.397 3.162-4.457 3.297-.092.207-.032.449.145.591.175.142.426.147.61.014.012-.009 1.262-.902 3.702-.902 2.426 0 3.674.881 3.702.901.088.066.194.099.298.099.11 0 .221-.037.312-.109.177-.142.238-.386.145-.594zM5.999 12.458c-.208 0-.419-.065-.599-.2-.442-.331-.531-.958-.2-1.4 3.262-4.35 7.616-4.4 7.8-4.4.552 0 1 .448 1 1 0 .551-.445.998-.996 1-.156.002-3.569.086-6.205 3.6-.195.262-.496.4-.8.4zm23.002 2.125c-.305 0-.604-.138-.801-.4-2.592-3.457-6.961-2.627-7.004-2.62-.547.108-1.068-.243-1.177-.784-.108-.542.243-1.068.784-1.177.231-.047 5.657-1.072 8.996 3.38.332.442.242 1.069-.2 1.4-.179.137-.389.201-.598.201zm-5.747 8.994c-.188-.11-.432-.087-.597.06-.01.008-1.013.863-4.657.863-3.641 0-4.646-.854-4.646-.854-.159-.16-.404-.19-.6-.082-.195.111-.293.339-.238.557.01.044 1.144 4.379 5.484 4.379s5.474-4.335 5.485-4.379c.053-.213-.044-.431-.231-.544z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18S0 27.941 0 18 8.059 0 18 0s18 8.059 18 18"/><circle fill="#FF7892" cx="7" cy="18" r="5"/><circle fill="#FF7892" cx="29" cy="18" r="5"/><path fill="#664500" d="M27.335 21.629c-.178-.161-.444-.171-.635-.029-.039.029-3.922 2.9-8.7 2.9-4.766 0-8.662-2.871-8.7-2.9-.191-.142-.457-.13-.635.029-.177.16-.217.424-.094.628C8.7 22.472 11.788 27.5 18 27.5s9.301-5.028 9.429-5.243c.123-.205.084-.468-.094-.628zM7.999 15c-.15 0-.303-.034-.446-.106-.494-.247-.694-.848-.447-1.342C7.158 13.448 8.424 11 12 11c3.577 0 4.842 2.449 4.894 2.553.247.494.047 1.095-.447 1.342-.492.245-1.085.049-1.336-.436C15.068 14.379 14.281 13 12 13c-2.317 0-3.099 1.433-3.106 1.447-.175.351-.528.553-.895.553zm20.002 0c-.367 0-.72-.202-.896-.553C27.08 14.401 26.299 13 24 13s-3.08 1.401-3.112 1.46c-.26.481-.859.67-1.345.42-.485-.252-.682-.839-.438-1.328C19.157 13.449 20.423 11 24 11s4.843 2.449 4.895 2.553c.247.494.047 1.095-.447 1.342-.144.071-.297.105-.447.105z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18S0 27.941 0 18 8.059 0 18 0s18 8.059 18 18"/><path fill="#664500" d="M28.312 15.612c-.175-.142-.426-.147-.61-.014-.012.009-1.261.902-3.702.902-2.44 0-3.69-.893-3.7-.9-.183-.137-.435-.133-.611.009-.178.142-.238.386-.146.594.06.135 1.5 3.297 4.457 3.297 2.958 0 4.397-3.162 4.457-3.297.092-.207.032-.449-.145-.591zm-12.61-.014c-.012.009-1.26.902-3.702.902-2.441 0-3.69-.893-3.7-.9-.183-.137-.434-.133-.611.009-.178.142-.238.386-.146.594.06.135 1.5 3.297 4.457 3.297 2.958 0 4.397-3.162 4.457-3.297.092-.207.032-.449-.145-.591-.176-.143-.428-.147-.61-.014zM29.001 13c-.305 0-.604-.138-.801-.4-2.592-3.456-6.961-2.628-7.004-2.62-.547.108-1.068-.243-1.177-.784-.108-.541.243-1.068.784-1.177.231-.047 5.657-1.072 8.996 3.38.332.442.242 1.069-.2 1.4-.179.136-.389.201-.598.201zM6.999 13c-.208 0-.419-.065-.599-.2-.442-.331-.531-.958-.2-1.4 3.339-4.454 8.766-3.426 8.996-3.38.542.108.893.635.784 1.177-.108.54-.634.891-1.174.785-.186-.035-4.436-.808-7.006 2.618-.196.262-.497.4-.801.4zm16.255 10.577c-.188-.111-.432-.086-.597.06-.01.008-1.013.863-4.657.863-3.641 0-4.646-.854-4.646-.854-.159-.16-.404-.19-.6-.082-.195.111-.293.339-.238.557.01.044 1.144 4.379 5.484 4.379s5.474-4.335 5.485-4.379c.053-.213-.044-.431-.231-.544z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18S0 27.941 0 18 8.059 0 18 0s18 8.059 18 18"/><path fill="#664500" d="M18 21.849c-2.966 0-4.935-.346-7.369-.819-.557-.106-1.638 0-1.638 1.638 0 3.275 3.763 7.369 9.007 7.369s9.007-4.094 9.007-7.369c0-1.638-1.082-1.745-1.638-1.638-2.434.473-4.402.819-7.369.819"/><path fill="#E75A70" d="M16.65 3.281C15.791.85 13.126-.426 10.694.431c-1.476.52-2.521 1.711-2.928 3.104-1.191-.829-2.751-1.1-4.225-.58C1.111 3.813-.167 6.48.692 8.911c.122.344.284.663.472.958 1.951 3.582 7.588 6.1 11.001 6.131 2.637-2.167 5.446-7.665 4.718-11.677-.038-.348-.113-.698-.233-1.042zm2.7 0C20.209.85 22.875-.426 25.306.431c1.476.52 2.521 1.711 2.929 3.104 1.191-.829 2.751-1.1 4.225-.58 2.43.858 3.707 3.525 2.85 5.956-.123.344-.284.663-.473.958-1.951 3.582-7.588 6.1-11.002 6.131-2.637-2.167-5.445-7.665-4.717-11.677.037-.348.112-.698.232-1.042z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18S0 27.941 0 18 8.059 0 18 0s18 8.059 18 18"/><path fill="#664500" d="M24.327 23.622c-.153-.132-.368-.159-.551-.069l-4 2c-1.871.935-6.727.947-6.776.947-.276 0-.5.224-.5.5 0 .185.101.347.25.433v.001h.001v.001c.071.04.153.063.24.065h7.008c2.658 0 4.089-2.185 4.475-3.342.064-.192.006-.403-.147-.536zM31.001 16c-.305 0-.604-.138-.801-.4-2.641-3.521-6.061-3.599-6.206-3.6-.55-.006-.994-.456-.991-1.005.003-.551.447-.995.997-.995.184 0 4.537.05 7.8 4.4.332.442.242 1.069-.2 1.4-.18.135-.39.2-.599.2zM4.999 16c-.208 0-.419-.065-.599-.2-.442-.331-.531-.958-.2-1.4C7.462 10.05 11.816 10 12 10c.552 0 1 .448 1 1 0 .551-.445.998-.996 1-.156.002-3.569.086-6.205 3.6-.195.262-.496.4-.8.4zm10.898 1.396c.023-.052.059-.096.073-.154.134-.536-.192-1.079-.727-1.213-.18-.045-4.467-1.08-7.797 1.138-.459.306-.583.927-.277 1.387.192.29.509.446.832.446.19 0 .383-.055.554-.168 1.092-.729 2.362-.995 3.468-1.061-.009.076-.023.151-.023.229 0 1.104.896 2 2 2s2-.896 2-2c0-.212-.042-.412-.103-.604zm11.999-.001c.023-.052.059-.095.073-.152.135-.536-.191-1.079-.727-1.213-.18-.045-4.466-1.08-7.797 1.138-.46.306-.584.927-.277 1.387.192.289.51.445.833.445.19 0 .383-.055.554-.168 1.092-.729 2.361-.994 3.469-1.06-.009.076-.024.15-.024.228 0 1.104.896 2 2 2s2-.896 2-2c0-.212-.042-.413-.104-.605z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><path fill="#664500" d="M25.485 27.879C25.44 27.7 24.317 23.5 18 23.5c-6.318 0-7.44 4.2-7.485 4.379-.055.217.043.442.237.554.195.111.439.078.6-.077.019-.019 1.954-1.856 6.648-1.856s6.63 1.837 6.648 1.855c.096.095.224.145.352.145.084 0 .169-.021.246-.064.196-.112.294-.339.239-.557zM29.001 14c-.305 0-.604-.138-.801-.4-2.432-3.244-6.514-.846-6.686-.743-.475.285-1.089.13-1.372-.343-.284-.474-.131-1.088.343-1.372 1.998-1.199 6.514-2.477 9.314 1.257.332.442.242 1.069-.2 1.4-.179.136-.389.201-.598.201zM6.999 14c-.208 0-.419-.065-.599-.2-.442-.331-.531-.958-.2-1.4 2.801-3.734 7.317-2.456 9.314-1.257.474.284.627.898.343 1.372-.284.473-.896.628-1.37.344-.179-.106-4.274-2.475-6.688.742-.195.261-.496.399-.8.399zM29 16c0-.552-.447-1-1-1h-7c-.553 0-1 .448-1 1s.447 1 1 1h5.092c.207.581.756 1 1.408 1 .828 0 1.5-.671 1.5-1.5 0-.11-.014-.217-.036-.321.012-.06.036-.116.036-.179zm-13 0c0-.552-.448-1-1-1H8c-.552 0-1 .448-1 1s.448 1 1 1h5.092c.207.581.756 1 1.408 1 .828 0 1.5-.671 1.5-1.5 0-.11-.014-.217-.036-.321.011-.06.036-.116.036-.179z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><path fill="#664500" d="M28.457 17.797c-.06-.135-1.499-3.297-4.457-3.297-2.957 0-4.397 3.162-4.457 3.297-.092.207-.032.449.145.591.175.142.426.147.61.014.012-.009 1.262-.902 3.702-.902 2.426 0 3.674.881 3.702.901.088.066.194.099.298.099.11 0 .221-.037.312-.109.177-.142.238-.386.145-.594zm-11 0c-.06-.135-1.499-3.297-4.457-3.297-2.957 0-4.397 3.162-4.457 3.297-.092.207-.032.449.144.591.176.142.427.147.61.014.013-.009 1.262-.902 3.703-.902 2.426 0 3.674.881 3.702.901.089.066.194.099.298.099.11 0 .221-.037.312-.109.178-.142.237-.386.145-.594zM13 28s1-4 5-4 5 4 5 4-1-1-5-1-5 1-5 1z"/><path fill="#5DADEC" d="M11 11c0 2.762-2.238 5-5 5-2.761 0-5-2.238-5-5S5 1 6 1s5 7.238 5 10z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><path fill="#664500" d="M17.312 17.612c-.176-.143-.427-.147-.61-.014-.012.009-1.26.902-3.702.902-2.441 0-3.69-.893-3.7-.9-.183-.137-.435-.133-.611.009-.178.142-.238.386-.146.594.06.135 1.5 3.297 4.457 3.297 2.958 0 4.397-3.162 4.457-3.297.092-.207.032-.449-.145-.591zm10 0c-.176-.143-.426-.148-.61-.014-.012.009-1.261.902-3.702.902-2.44 0-3.69-.893-3.7-.9-.183-.137-.434-.133-.611.009-.178.142-.238.386-.146.594.06.135 1.5 3.297 4.457 3.297 2.958 0 4.397-3.162 4.457-3.297.092-.207.032-.449-.145-.591zM22 28h-8c-.552 0-1-.447-1-1s.448-1 1-1h8c.553 0 1 .447 1 1s-.447 1-1 1zM6 14c-.552 0-1-.448-1-1 0-.551.445-.998.996-1 .156-.002 3.569-.086 6.205-3.6.331-.44.957-.532 1.4-.2.442.331.531.958.2 1.4C10.538 13.95 6.184 14 6 14zm24 0c-.184 0-4.537-.05-7.8-4.4-.332-.442-.242-1.069.2-1.4.441-.333 1.067-.242 1.399.2 2.641 3.521 6.061 3.599 6.206 3.6.55.006.994.456.991 1.005-.002.551-.446.995-.996.995z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><path fill="#664500" d="M6 13c-.552 0-1-.448-1-1 0-.551.445-.998.996-1 .156-.002 3.569-.086 6.205-3.6.331-.44.957-.532 1.4-.2.442.331.531.958.2 1.4C10.538 12.95 6.184 13 6 13zm24 0c-.184 0-4.537-.05-7.8-4.4-.332-.442-.242-1.069.2-1.4.441-.333 1.067-.242 1.399.2 2.641 3.521 6.061 3.599 6.206 3.6.55.006.994.456.991 1.005-.002.551-.446.995-.996.995zm.6 7.2c-.114-.086-1.931-1.426-4.646-2.344.026-.115.046-.233.046-.356 0-.369-.139-.703-.359-.964 1.802-.52 3.334-.536 3.361-.536.551-.002.998-.45.997-1.002-.001-.551-.447-.998-.999-.998-.221 0-5.451.038-8.707 3.293-.286.286-.372.716-.217 1.09.154.374.52.617.924.617 4.59 0 8.363 2.772 8.401 2.801.18.134.39.198.598.198.305 0 .605-.139.802-.4.33-.443.24-1.068-.201-1.399zm-14.893-2.907C12.452 14.038 7.221 14 7 14c-.552 0-.999.447-.999.998-.001.552.446 1 .998 1.002.026 0 1.558.016 3.361.536-.221.261-.36.595-.36.964 0 .123.019.241.047.356-2.716.918-4.533 2.258-4.647 2.344-.442.331-.531.958-.2 1.399.196.263.497.401.801.401.208 0 .419-.065.599-.2.037-.028 3.787-2.8 8.4-2.8.404 0 .769-.243.924-.617.155-.374.069-.804-.217-1.09zM18 30c-.304 0-.591-.138-.781-.375l-3.194-3.992L11.8 28.6c-.174.232-.44.377-.729.397-.29.021-.574-.085-.778-.29l-1-1c-.391-.391-.391-1.023 0-1.414s1.023-.391 1.414 0l.185.185L13.2 23.4c.186-.248.475-.396.784-.4.295-.01.603.133.796.375L18 27.399l3.219-4.024c.193-.241.484-.375.797-.375.31.005.599.152.784.4l2.309 3.077.185-.185c.391-.391 1.023-.391 1.414 0s.391 1.023 0 1.414l-1 1c-.205.205-.479.314-.778.29-.289-.021-.555-.165-.729-.397l-2.226-2.967-3.193 3.992c-.191.238-.478.376-.782.376z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><ellipse fill="#664500" cx="11.5" cy="15.5" rx="2.5" ry="3.5"/><path fill="#664500" d="M28.457 17.797c-.06-.135-1.499-3.297-4.457-3.297-2.957 0-4.397 3.162-4.457 3.297-.092.207-.032.449.145.591.175.142.426.147.61.014.012-.009 1.262-.902 3.702-.902 2.426 0 3.674.881 3.702.901.088.066.194.099.298.099.11 0 .221-.037.312-.109.177-.142.238-.386.145-.594zM5.999 11c-.208 0-.419-.065-.599-.2-.442-.331-.531-.958-.2-1.4C8.462 5.05 12.816 5 13 5c.552 0 1 .448 1 1 0 .551-.445.998-.996 1-.155.002-3.568.086-6.204 3.6-.196.262-.497.4-.801.4zm23.002 3c-.305 0-.604-.138-.801-.4-2.592-3.456-6.961-2.628-7.004-2.62-.547.11-1.068-.244-1.177-.784-.108-.541.243-1.068.784-1.177.231-.047 5.657-1.072 8.996 3.38.332.442.242 1.069-.2 1.4-.179.136-.389.201-.598.201zm-8.13 14c1.335-.412 2.629-1.156 2.629-2.5 0-2.619-4.912-2.968-5.472-2.999-.274-.026-.509.193-.527.468-.017.274.19.511.464.53.035.002 3.535.299 3.535 2.001s-3.5 1.999-3.535 2.001c-.014.001-.024.009-.037.011-.052.006-.101.018-.146.04l-.019.011c-.047.026-.088.057-.124.098-.014.015-.024.031-.036.048-.023.032-.044.063-.06.102-.012.029-.018.061-.024.092-.004.023-.016.044-.018.067 0 .011.004.021.004.031s-.005.021-.004.031c.001.024.013.045.018.068.006.031.011.061.023.09.013.03.031.057.049.084.017.024.032.05.052.071.023.023.05.041.078.061.024.017.046.034.074.047.032.015.066.021.101.027.024.006.044.018.069.02.035.001 3.535.298 3.535 2s-3.5 1.999-3.535 2.001c-.274.02-.481.257-.464.53.017.265.237.469.499.469l.028-.001c.56-.031 5.472-.38 5.472-2.999 0-1.344-1.294-2.088-2.629-2.5z"/><path fill="#E75A70" d="M35.404 27.222c.739-1.516.11-3.347-1.405-4.086-.922-.449-1.956-.391-2.793.06-.16-.936-.75-1.789-1.67-2.237-1.517-.74-3.348-.109-4.087 1.406-.105.215-.18.437-.23.659-.774 2.556.64 6.341 2.192 7.948 2.223.234 6.077-.979 7.615-3.161.145-.179.273-.374.378-.589z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18S0 27.941 0 18 8.059 0 18 0s18 8.059 18 18"/><circle fill="#FF7892" cx="7" cy="21" r="5"/><circle fill="#FF7892" cx="29" cy="21" r="5"/><path fill="#664500" d="M28.416 17.723C28.355 17.632 26.901 15.5 24 15.5c-2.9 0-4.355 2.132-4.416 2.223-.135.202-.104.47.071.638.174.167.446.185.643.042.012-.01 1.262-.903 3.702-.903 2.426 0 3.674.881 3.702.901.089.066.194.099.298.099.124 0 .248-.046.344-.137.177-.167.207-.438.072-.64zM12 15.5c-2.9 0-4.355 2.132-4.416 2.223-.134.202-.104.47.071.638.175.167.447.185.642.042.013-.01 1.262-.903 3.703-.903 2.426 0 3.674.881 3.702.901.089.066.194.099.298.099.124 0 .248-.046.344-.137.177-.167.208-.438.072-.641-.061-.09-1.515-2.222-4.416-2.222zM21.871 27c1.335-.412 2.629-1.156 2.629-2.5 0-2.619-4.912-2.968-5.473-2.999-.277-.036-.51.194-.526.468-.017.274.19.511.464.53.035.002 3.535.299 3.535 2.001s-3.5 1.999-3.535 2.001c-.01.001-.017.006-.026.007-.124.008-.23.065-.31.159l-.015.021c-.029.039-.055.078-.073.125-.011.027-.016.057-.021.086-.005.024-.017.046-.019.07-.001.01.004.02.004.031s-.005.021-.004.031c.002.025.013.046.019.07.006.029.011.059.022.087.013.032.032.06.051.088.017.023.03.047.05.067.023.024.052.043.081.062.024.017.045.033.071.046.031.015.065.021.101.027.023.006.044.018.069.02.035.003 3.535.3 3.535 2.002s-3.5 1.999-3.535 2.001c-.273.02-.481.257-.464.53.017.265.236.469.499.469l.027-.001c.561-.031 5.473-.38 5.473-2.999 0-1.344-1.294-2.088-2.629-2.5zm9.13-11c-.305 0-.604-.138-.801-.4-2.641-3.521-6.061-3.599-6.206-3.6-.55-.006-.994-.456-.991-1.005.003-.551.447-.995.997-.995.184 0 4.537.05 7.8 4.4.332.442.242 1.069-.2 1.4-.18.135-.39.2-.599.2zM4.999 16c-.208 0-.419-.065-.599-.2-.442-.331-.531-.958-.2-1.4C7.462 10.05 11.816 10 12 10c.552 0 1 .448 1 1 0 .551-.445.998-.996 1-.156.002-3.569.086-6.205 3.6-.195.262-.496.4-.8.4z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCB4C" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><path fill="#65471B" d="M15.457 15.815c-.06-.135-1.499-3.297-4.457-3.297-2.957 0-4.397 3.162-4.457 3.297-.092.207-.032.449.144.591.177.143.427.147.61.014.013-.009 1.262-.902 3.703-.902 2.426 0 3.674.881 3.702.901.088.066.193.099.298.099.11 0 .221-.037.311-.109.179-.142.238-.386.146-.594z"/><path fill="#F4F7F9" d="M31 13.5c0 3.59-2.91 6.5-6.5 6.5S18 17.09 18 13.5 20.91 7 24.5 7 31 9.91 31 13.5z"/><circle fill="#292F33" cx="24.5" cy="13.5" r="2.5"/><path fill="#65471B" d="M7 21.262c0 3.964 4.596 9 11 9s11-5 11-9c0 0-10.333 2.756-22 0z"/><path fill="#E8596E" d="M18.545 23.604l-1.091-.005c-3.216-.074-5.454-.596-5.454-.596v6.961c0 3 2 6 6 6s6-3 6-6v-6.92c-1.922.394-3.787.542-5.455.56z"/><path fill="#DD2F45" d="M18 31.843c.301 0 .545-.244.545-.545v-7.694l-1.091-.005v7.699c.001.301.245.545.546.545z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCB4C" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><path fill="#65471B" d="M30.6 18.2c-.114-.085-1.931-1.426-4.646-2.344.026-.115.046-.233.046-.356 0-.369-.139-.703-.359-.964 1.802-.52 3.334-.536 3.361-.536.551-.002.998-.45.997-1.002-.001-.551-.447-.998-.999-.998-.221 0-5.451.038-8.707 3.293-.286.286-.372.716-.217 1.09.154.373.52.617.924.617 4.59 0 8.363 2.773 8.401 2.801.18.134.39.199.598.199.305 0 .605-.139.802-.401.33-.443.24-1.068-.201-1.399zm-14.893-2.907C12.452 12.038 7.221 12 7 12c-.552 0-.999.447-.999.998-.001.552.446 1 .998 1.002.026 0 1.558.016 3.361.536-.221.261-.36.595-.36.964 0 .123.019.241.047.356-2.716.918-4.533 2.259-4.647 2.344-.442.331-.531.958-.2 1.4.196.262.497.4.801.4.208 0 .419-.065.599-.2.037-.028 3.787-2.8 8.4-2.8.404 0 .769-.244.924-.617.155-.374.069-.804-.217-1.09zM7 21.263c0 3.964 4.596 9 11 9s11-5 11-9c0 0-10.333 2.756-22 0z"/><path fill="#E8596E" d="M18.545 23.604l-1.091-.005c-3.216-.074-5.454-.596-5.454-.596v6.961c0 3 2 6 6 6s6-3 6-6v-6.92c-1.922.395-3.787.543-5.455.56z"/><path fill="#DD2F45" d="M18 31.844c.301 0 .545-.244.545-.545v-7.694l-1.091-.005v7.699c.001.301.245.545.546.545z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18S0 27.941 0 18 8.059 0 18 0s18 8.059 18 18"/><path fill="#664500" d="M23.485 28.879C23.474 28.835 22.34 24.5 18 24.5s-5.474 4.335-5.485 4.379c-.053.213.044.431.232.544.188.112.433.086.596-.06.009-.008 1.013-.863 4.657-.863 3.59 0 4.617.83 4.656.863.095.09.219.137.344.137.084 0 .169-.021.246-.064.196-.112.294-.339.239-.557zm2.295-13.238c-.341-.093-.692-.14-1.043-.14-2.345 0-4.053 2.06-4.125 2.147-.143.176-.148.425-.017.609.134.184.374.253.586.173.005-.002.572-.214 1.564-.214.714 0 1.469.107 2.244.319 2.342.638 3.313 1.818 3.334 1.844.098.124.243.191.394.191.066 0 .134-.014.197-.041.209-.09.331-.31.297-.534-.021-.146-.577-3.576-3.431-4.354zm-14.554-.129c-.317 0-.636.039-.947.116-2.87.707-3.513 4.121-3.539 4.267-.04.223.076.443.281.54.067.031.14.047.211.047.145 0 .287-.063.385-.18.01-.012 1.01-1.178 3.379-1.761.714-.176 1.412-.265 2.073-.265 1.104 0 1.732.253 1.735.254.067.028.131.04.207.04.272.012.509-.221.509-.5 0-.165-.08-.311-.203-.402-.367-.435-1.953-2.156-4.091-2.156z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><path fill="#664500" d="M25.485 29.879C25.44 29.7 24.317 25.5 18 25.5c-6.318 0-7.44 4.2-7.485 4.379-.055.217.043.442.237.554.195.109.439.079.6-.077.019-.019 1.954-1.856 6.648-1.856s6.63 1.837 6.648 1.855c.096.095.224.145.352.145.084 0 .169-.021.246-.064.196-.112.294-.339.239-.557zm-9.778-12.586C12.452 14.038 7.221 14 7 14c-.552 0-.999.447-.999.998-.001.552.446 1 .998 1.002.029 0 1.925.022 3.983.737-.593.64-.982 1.634-.982 2.763 0 1.934 1.119 3.5 2.5 3.5s2.5-1.566 2.5-3.5c0-.174-.019-.34-.037-.507.013 0 .025.007.037.007.256 0 .512-.098.707-.293.391-.391.391-1.023 0-1.414zM29 14c-.221 0-5.451.038-8.707 3.293-.391.391-.391 1.023 0 1.414.195.195.451.293.707.293.013 0 .024-.007.036-.007-.016.167-.036.333-.036.507 0 1.934 1.119 3.5 2.5 3.5s2.5-1.566 2.5-3.5c0-1.129-.389-2.123-.982-2.763 2.058-.715 3.954-.737 3.984-.737.551-.002.998-.45.997-1.002-.001-.551-.447-.998-.999-.998z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DA2F47" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><path fill="#292F33" d="M25.485 29.879C25.44 29.7 24.317 25.5 18 25.5c-6.318 0-7.44 4.2-7.485 4.379-.055.217.043.442.237.554.195.109.439.079.6-.077.019-.019 1.954-1.856 6.648-1.856s6.63 1.837 6.648 1.855c.096.095.224.145.352.145.084 0 .169-.021.246-.064.196-.112.294-.339.239-.557zm-9.778-12.586C12.452 14.038 7.221 14 7 14c-.552 0-.999.447-.999.998-.001.552.446 1 .998 1.002.029 0 1.925.022 3.983.737-.593.64-.982 1.634-.982 2.763 0 1.934 1.119 3.5 2.5 3.5s2.5-1.566 2.5-3.5c0-.174-.019-.34-.037-.507.013 0 .025.007.037.007.256 0 .512-.098.707-.293.391-.391.391-1.023 0-1.414zM29 14c-.221 0-5.451.038-8.707 3.293-.391.391-.391 1.023 0 1.414.195.195.451.293.707.293.013 0 .024-.007.036-.007-.016.167-.036.333-.036.507 0 1.934 1.119 3.5 2.5 3.5s2.5-1.566 2.5-3.5c0-1.129-.389-2.123-.982-2.763 2.058-.715 3.954-.737 3.984-.737.551-.002.998-.45.997-1.002-.001-.551-.447-.998-.999-.998z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><ellipse fill="#664500" cx="11.5" cy="17" rx="2.5" ry="3.5"/><ellipse fill="#664500" cx="24.5" cy="17" rx="2.5" ry="3.5"/><path fill="#664500" d="M5.999 13.5c-.208 0-.419-.065-.599-.2-.442-.331-.531-.958-.2-1.4 3.262-4.35 7.616-4.4 7.8-4.4.552 0 1 .448 1 1 0 .551-.445.998-.996 1-.155.002-3.568.086-6.204 3.6-.196.262-.497.4-.801.4zm24.002 0c-.305 0-.604-.138-.801-.4-2.641-3.521-6.061-3.599-6.206-3.6-.55-.006-.994-.456-.991-1.005.003-.551.447-.995.997-.995.184 0 4.537.05 7.8 4.4.332.442.242 1.069-.2 1.4-.18.135-.39.2-.599.2zm-6.516 14.879C23.474 28.335 22.34 24 18 24s-5.474 4.335-5.485 4.379c-.053.213.044.431.232.544.188.112.433.086.596-.06C13.352 28.855 14.356 28 18 28c3.59 0 4.617.83 4.656.863.095.09.219.137.344.137.084 0 .169-.021.246-.064.196-.112.294-.339.239-.557z"/><path fill="#5DADEC" d="M16 31c0 2.762-2.238 5-5 5s-5-2.238-5-5 4-10 5-10 5 7.238 5 10z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18S0 27.941 0 18 8.059 0 18 0s18 8.059 18 18"/><path fill="#664500" d="M29 10c-5.554 0-7.802-4.367-7.895-4.553-.247-.494-.047-1.095.447-1.342.493-.246 1.092-.048 1.34.443C22.967 4.694 24.713 8 29 8c.553 0 1 .448 1 1s-.447 1-1 1zM7 10c-.552 0-1-.448-1-1s.448-1 1-1c5.083 0 5.996-3.12 6.033-3.253.145-.528.692-.848 1.219-.709.53.139.851.673.718 1.205C14.921 5.437 13.704 10 7 10zm-.999 13c-.304 0-.604-.138-.801-.4-.332-.441-.242-1.068.2-1.399.143-.107 2.951-2.183 6.856-2.933C9.781 17.027 7.034 17 6.999 17c-.552-.001-.999-.45-.998-1.002 0-.551.447-.998.999-.998.221 0 5.452.038 8.707 3.293.286.286.372.716.217 1.09-.155.374-.52.617-.924.617-4.613 0-8.363 2.772-8.4 2.8-.18.135-.391.2-.599.2zm23.998-.001c-.208 0-.418-.064-.598-.198C29.363 22.772 25.59 20 21 20c-.404 0-.77-.243-.924-.617-.155-.374-.069-.804.217-1.09C23.549 15.038 28.779 15 29 15c.552 0 .998.447.999.998.001.552-.446 1-.997 1.002-.036 0-2.783.027-5.258 1.268 3.905.75 6.713 2.825 6.855 2.933.441.331.531.956.201 1.398-.196.261-.496.4-.801.4zm-4.545 7.792c-.118-.257-2.938-6.291-7.21-6.291-4.249 0-7.546 6.007-7.684 6.262-.113.209-.063.469.119.621.093.078.207.117.321.117.11 0 .22-.036.311-.109.031-.024 3.163-2.479 6.933-2.479 3.743 0 6.388 2.43 6.414 2.454.175.162.442.18.634.04.194-.14.262-.397.162-.615z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><ellipse fill="#664500" cx="11.5" cy="16.5" rx="2.5" ry="3.5"/><ellipse fill="#664500" cx="24.5" cy="16.5" rx="2.5" ry="3.5"/><path fill="#664500" d="M23.485 27.879C23.474 27.835 22.34 23.5 18 23.5s-5.474 4.335-5.485 4.379c-.053.213.044.431.232.544.188.112.433.086.596-.06.009-.007 1.013-.863 4.657-.863 3.59 0 4.617.83 4.656.863.095.091.219.137.344.137.084 0 .169-.021.246-.064.196-.111.294-.339.239-.557z"/><path fill="#5DADEC" d="M10 30c0 2.762-2.238 5-5 5s-5-2.238-5-5 4-10 5-10 5 7.238 5 10z"/><path fill="#664500" d="M30 13c-5.554 0-7.802-4.367-7.895-4.553-.247-.494-.047-1.095.447-1.342.492-.247 1.092-.048 1.34.443C23.967 7.694 25.713 11 30 11c.553 0 1 .448 1 1 0 .553-.447 1-1 1zM6 13c-.552 0-1-.448-1-1s.448-1 1-1c5.083 0 5.996-3.12 6.033-3.253.145-.528.69-.848 1.219-.709.53.139.851.673.718 1.205C13.921 8.437 12.704 13 6 13z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><path fill="#BDDDF4" d="M18 11c8.749 0 16.033 4.509 17.656 10.484.222-1.128.344-2.292.344-3.484 0-9.94-8.059-18-18-18C8.06 0 0 8.06 0 18c0 1.192.123 2.356.344 3.484C1.967 15.509 9.252 11 18 11z"/><ellipse fill="#664500" cx="11.5" cy="16.5" rx="2.5" ry="3.5"/><ellipse fill="#664500" cx="24.5" cy="16.5" rx="2.5" ry="3.5"/><path fill="#664500" d="M5.999 12c-.208 0-.419-.065-.599-.2-.442-.331-.531-.958-.2-1.4C8.462 6.05 12.816 6 13 6c.552 0 1 .448 1 1 0 .551-.445.998-.996 1-.155.002-3.568.086-6.204 3.6-.196.262-.497.4-.801.4zm24.002 0c-.305 0-.604-.138-.801-.4-2.64-3.521-6.061-3.598-6.206-3.6-.55-.006-.994-.456-.991-1.005C22.006 6.444 22.45 6 23 6c.184 0 4.537.05 7.8 4.4.332.442.242 1.069-.2 1.4-.18.135-.39.2-.599.2zm-6.516 15.879C23.474 27.835 22.34 23.5 18 23.5s-5.474 4.335-5.485 4.379c-.053.213.043.431.231.544.187.112.433.086.596-.06.011-.008 1.015-.863 4.658-.863 3.589 0 4.617.83 4.656.863.095.09.219.137.344.137.084 0 .169-.021.246-.064.196-.112.294-.339.239-.557z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18S0 27.941 0 18 8.059 0 18 0s18 8.059 18 18"/><path fill="#664500" d="M23.485 28.879C23.474 28.835 22.34 24.5 18 24.5s-5.474 4.335-5.485 4.379c-.053.213.044.431.232.544.188.112.433.086.596-.06.009-.008 1.013-.863 4.657-.863 3.59 0 4.617.83 4.656.863.095.09.219.137.344.137.084 0 .169-.021.246-.064.196-.112.294-.339.239-.557zm-7.782-11.281c-.013.009-1.262.902-3.703.902-2.442 0-3.69-.893-3.7-.9-.194-.146-.466-.132-.644.037-.177.167-.208.438-.072.641.061.09 1.515 2.222 4.416 2.222 2.9 0 4.355-2.132 4.416-2.223.134-.202.104-.47-.071-.638-.176-.169-.449-.184-.642-.041zm12.642.042c-.175-.169-.447-.186-.643-.042-.012.009-1.262.902-3.702.902-2.441 0-3.69-.893-3.7-.9-.193-.146-.466-.132-.644.037-.177.167-.207.438-.072.641.061.09 1.515 2.222 4.416 2.222 2.9 0 4.355-2.132 4.416-2.223.135-.201.104-.469-.071-.637zM31.001 16c-.305 0-.604-.138-.801-.4-2.641-3.521-6.061-3.599-6.206-3.6-.55-.006-.994-.456-.991-1.005.003-.551.447-.995.997-.995.184 0 4.537.05 7.8 4.4.332.442.242 1.069-.2 1.4-.18.135-.39.2-.599.2zM4.999 16c-.208 0-.419-.065-.599-.2-.442-.331-.531-.958-.2-1.4C7.462 10.05 11.816 10 12 10c.552 0 1 .448 1 1 0 .551-.445.998-.996 1-.156.002-3.569.086-6.205 3.6-.195.262-.496.4-.8.4z"/><path fill="#5DADEC" d="M23 23c6.211 0 13 4 13 9 0 4-3 4-3 4-8 0-1-9-10-13z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18S0 27.941 0 18 8.059 0 18 0s18 8.059 18 18"/><path fill="#664500" d="M22 27c0 2.763-1.791 3-4 3-2.21 0-4-.237-4-3 0-2.761 1.79-6 4-6 2.209 0 4 3.239 4 6zm8-12c-.124 0-.25-.023-.371-.072-5.229-2.091-7.372-5.241-7.461-5.374-.307-.46-.183-1.081.277-1.387.459-.306 1.077-.184 1.385.274.019.027 1.93 2.785 6.541 4.629.513.206.763.787.558 1.3-.157.392-.533.63-.929.63zM6 15c-.397 0-.772-.238-.929-.629-.205-.513.044-1.095.557-1.3 4.612-1.844 6.523-4.602 6.542-4.629.308-.456.929-.577 1.387-.27.457.308.581.925.275 1.383-.089.133-2.232 3.283-7.46 5.374C6.25 14.977 6.124 15 6 15z"/><path fill="#5DADEC" d="M24 16h4v19l-4-.046V16zM8 35l4-.046V16H8v19z"/><path fill="#664500" d="M14.999 18c-.15 0-.303-.034-.446-.105-3.512-1.756-7.07-.018-7.105 0-.495.249-1.095.046-1.342-.447-.247-.494-.047-1.095.447-1.342.182-.09 4.498-2.197 8.895 0 .494.247.694.848.447 1.342-.176.35-.529.552-.896.552zm14 0c-.15 0-.303-.034-.446-.105-3.513-1.756-7.07-.018-7.105 0-.494.248-1.094.047-1.342-.447-.247-.494-.047-1.095.447-1.342.182-.09 4.501-2.196 8.895 0 .494.247.694.848.447 1.342-.176.35-.529.552-.896.552z"/><ellipse fill="#5DADEC" cx="18" cy="34" rx="18" ry="2"/><ellipse fill="#E75A70" cx="18" cy="27" rx="3" ry="2"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><ellipse fill="#664500" cx="11.5" cy="16.5" rx="2.5" ry="3.5"/><ellipse fill="#664500" cx="24.5" cy="16.5" rx="2.5" ry="3.5"/><path fill="#664500" d="M23.485 27.879C23.474 27.835 22.34 23.5 18 23.5s-5.474 4.335-5.484 4.379c-.053.213.043.431.231.544.187.112.433.086.596-.06.01-.008 1.014-.863 4.657-.863 3.59 0 4.617.83 4.656.863.095.09.219.137.344.137.084 0 .169-.021.246-.064.196-.112.294-.339.239-.557z"/><path fill="#5DADEC" d="M10 30c0 2.762-2.238 5-5 5s-5-2.238-5-5 4-10 5-10 5 7.238 5 10z"/><path fill="#BDDDF4" d="M18 11c8.749 0 16.033 4.509 17.656 10.484.222-1.128.344-2.292.344-3.484 0-9.94-8.059-18-18-18C8.06 0 0 8.06 0 18c0 1.192.123 2.356.344 3.484C1.967 15.509 9.252 11 18 11z"/><path fill="#664500" d="M30 12c-5.554 0-7.802-4.367-7.895-4.553-.247-.494-.047-1.095.447-1.342.492-.247 1.092-.048 1.34.443C23.967 6.694 25.713 10 30 10c.553 0 1 .448 1 1s-.447 1-1 1zM6 12c-.552 0-1-.448-1-1s.448-1 1-1c5.083 0 5.996-3.12 6.033-3.253.145-.528.69-.848 1.219-.709.53.139.851.673.718 1.205C13.921 7.437 12.704 12 6 12z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M18 0C8.06 0 0 8.06 0 18c0 6.051 2.996 11.392 7.574 14.655C7.678 26.217 5.337 19 1.404 19c-.464 0-.84.066-1.153.183C.554 18.426 1.211 18 2.44 18c4.27 0 6.666 8.506 6.092 15.288C11.286 34.997 14.522 36 18 36c3.479 0 6.716-1.004 9.47-2.713C26.893 26.48 29.288 18 33.561 18c1.233 0 1.892.426 2.192 1.183-.314-.117-.691-.183-1.157-.183-3.938 0-6.278 7.199-6.17 13.655C33.005 29.392 36 24.051 36 18c0-9.94-8.059-18-18-18z"/><path fill="#BDDDF4" d="M18 0C8.06 0 0 8.06 0 18c0 1.192.123 2.356.344 3.484.234-.863.6-1.691 1.058-2.484-.463 0-.838.066-1.15.183.264-.659.822-1.048 1.768-1.142C5.012 13.862 11.037 11 18 11c6.964 0 12.988 2.861 15.98 7.04.95.094 1.51.482 1.772 1.143-.312-.117-.689-.183-1.153-.183.458.793.823 1.621 1.058 2.484.221-1.128.343-2.292.343-3.484 0-9.94-8.059-18-18-18z"/><path fill="#F5F8FA" d="M7.347 11.91c-.946 3.176.107 6.293 2.353 6.962 2.246.67 4.834-1.362 5.779-4.538.946-3.175-.106-6.293-2.351-6.962-2.246-.669-4.834 1.363-5.781 4.538zm21.305 0c.946 3.176-.107 6.293-2.352 6.962-2.246.67-4.834-1.362-5.779-4.538-.946-3.175.107-6.293 2.351-6.962 2.245-.669 4.833 1.363 5.78 4.538z"/><path fill="#664500" d="M18 18c-2.757 0-5 2.243-5 5v6c0 2.757 2.243 5 5 5s5-2.243 5-5v-6c0-2.757-2.243-5-5-5z"/><path fill="#FCAB40" d="M1.404 19c-.464 0-.84.066-1.153.183.072-.179.167-.336.281-.476C-1.33 20.998 2.849 28.54.818 36h6.46c1.19-6.96-1.235-17-5.874-17zm34.349.183c-.314-.117-.691-.183-1.157-.183-4.641 0-7.065 10.002-5.873 17h6.46c-1.906-7.045 1.656-14.089.57-16.817z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><ellipse fill="#664500" cx="18" cy="27" rx="5" ry="6"/><path fill="#664500" d="M5.999 11c-.208 0-.419-.065-.599-.2-.442-.331-.531-.958-.2-1.4C8.462 5.05 12.816 5 13 5c.552 0 1 .448 1 1 0 .551-.445.998-.996 1-.155.002-3.568.086-6.204 3.6-.196.262-.497.4-.801.4zm24.002 0c-.305 0-.604-.138-.801-.4-2.64-3.521-6.061-3.598-6.206-3.6-.55-.006-.994-.456-.991-1.005C22.006 5.444 22.45 5 23 5c.184 0 4.537.05 7.8 4.4.332.442.242 1.069-.2 1.4-.18.135-.39.2-.599.2z"/><path fill="#F5F8FA" d="M18 23c-1.657 0-3 1.79-3 4h6c0-2.21-1.343-4-3-4z"/><ellipse fill="#664500" cx="12" cy="14.5" rx="2.5" ry="3.5"/><ellipse fill="#664500" cx="24" cy="14.5" rx="2.5" ry="3.5"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><circle fill="#FF7892" cx="29" cy="23" r="5"/><circle fill="#FF7892" cx="7" cy="23" r="5"/><circle fill="#F5F8FA" cx="24.5" cy="16.5" r="5.5"/><circle fill="#F5F8FA" cx="11.5" cy="16.5" r="5.5"/><circle fill="#664500" cx="11.5" cy="16.5" r="2.5"/><circle fill="#664500" cx="24.5" cy="16.5" r="2.5"/><path fill="#664500" d="M22 30h-8c-.552 0-1-.447-1-1s.448-1 1-1h8c.553 0 1 .447 1 1s-.447 1-1 1zm8.001-19c-.305 0-.604-.138-.801-.4-2.64-3.521-6.061-3.598-6.206-3.6-.55-.006-.994-.456-.991-1.005C22.006 5.444 22.45 5 23 5c.184 0 4.537.05 7.8 4.4.332.442.242 1.069-.2 1.4-.18.135-.39.2-.599.2zM5.999 11c-.208 0-.419-.065-.599-.2-.442-.331-.531-.958-.2-1.4C8.462 5.05 12.816 5 13 5c.552 0 1 .448 1 1 0 .551-.445.998-.996 1-.155.002-3.568.086-6.204 3.6-.196.262-.497.4-.801.4z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M36 18c0 9.941-8.059 18-18 18-9.94 0-18-8.059-18-18C0 8.06 8.06 0 18 0c9.941 0 18 8.06 18 18"/><path fill="#664500" d="M7.001 15c-.323 0-.64-.156-.833-.445-.306-.46-.182-1.081.277-1.387C6.578 13.08 9.746 11 14 11c.552 0 1 .448 1 1s-.448 1-1 1c-3.655 0-6.418 1.814-6.445 1.832-.171.114-.364.168-.554.168zm21.998 0c-.189 0-.382-.054-.552-.167C28.419 14.815 25.628 13 22 13c-.553 0-1-.448-1-1s.447-1 1-1c4.254 0 7.422 2.08 7.555 2.168.46.306.584.927.277 1.387-.192.289-.51.445-.833.445z"/><path fill="#F5F8FA" d="M27 22.091L36 18c0-.66-.041-1.309-.109-1.95L27 20.091V19c0-1.104-.896-2-2-2H11c-1.104 0-2 .896-2 2v1.091L.11 16.05C.041 16.691 0 17.34 0 18l9 4.091v4.546l-7.453-1.355c.341.77.741 1.507 1.183 2.215L9 28.637V30c0 1.104.896 2 2 2h14c1.104 0 2-.896 2-2v-1.363l6.271-1.141c.441-.708.841-1.445 1.182-2.215L27 26.637v-4.546z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#EF9645" d="M18 10.087l5.007-.047h6.016c.973 0 2.265-.038 3.195.873-.81-1.187-2.172-1.967-3.718-1.967H28l-.243-.094H22.1l.016-4c0-.812.531-1.578.734-1.998-1.096.592-1.85 1.737-1.85 3.07l-.087.272v2.656L18 8.868c-1.201 0-2.182.427-2.915 1.266l-.016-1.375.016-4.828c0-.758.406-1.438.669-1.954C14.71 2.669 14 3.946 14 5.424v.522l-.181.978.031 8.022c0 .891-.414 1.576-1.031 2.125-.53.472-1.053.656-1.819.656-1.657 0-2.884-1.281-2.884-2.938L8.1 5.712c0-.816.453-1.391.756-1.861C7.757 4.441 7 5.588 7 6.924V8.81l-.072.214v6.058c0 1.989-1.891 2.786-2.828 2.786-1.719 0-3.1-1.203-3.1-2.786v2.645s.185.209.194.312c.881.882 2.156 1.016 2.984 1.016 1.594 0 2.684-.851 3.337-2.062.678 1.212 1.913 2.016 3.428 2.016s3.684-.738 4.056-3.344c.141.167.506.51.678.641.703.531 1.585.734 2.322.734l1.116-.031h1.734c-.535.27-.778.552-1.203.938-1.729 1.568-2.578 4.094-2.578 7.672 0 .276.317.562.594.562.276 0 .578-.317.578-.594 0-3.962.973-6.327 3.203-7.562 1.175-.651 2.626-.969 4.516-.969.059 0 .562-.031.562-.031.276 0 .594-.333.594-.609 0-.276-.271-.547-.547-.547H20.13L18 15.853c-1.657 0-2.915-1.281-2.915-2.938 0-1.657 1.258-2.828 2.915-2.828z"/><path fill="#FFDC5D" d="M4.124 18.946c1.474 0 2.738-.831 3.392-2.043.678 1.212 1.958 2.043 3.446 2.043h.076c1.153 0 2.169-.51 2.889-1.298.022-.025.051-.043.073-.068v-.014c.185-.212.343-.448.481-.695.04-.072.069-.151.105-.227.093-.194.176-.394.236-.606.052-.173.106-.344.134-.526.141.167.296.319.46.46.069.059.147.107.221.162.116.086.229.177.355.251.589.351 1.271.56 2.008.56h3.166c-.535.27-.999.614-1.424 1-1.729 1.568-2.579 4.085-2.579 7.663 0 .276.224.5.5.5s.5-.224.5-.5c0-3.962 1.01-6.427 3.24-7.663 1.175-.651 2.682-.967 4.571-.967.059 0 .526-.033.526-.033.276 0 .5-.224.5-.5s-.224-.5-.5-.5H18c-1.657 0-3-1.343-3-3s1.343-3 3-3h11c.973 0 2.288.056 3.218.967.325.318.604.736.803 1.297l1.659 5.472c.156.512.73 2.857.626 3.346 0 7.34-8.7 14.972-19.004 14.972C6.326 36 1 27.883 1 17.957v-.229c.01.01.021.016.031.026.881.882 1.799 1.192 2.845 1.192h.248z"/><path fill="#FFDC5D" d="M3.864 5.946h.271C5.718 5.946 7 7.229 7 8.81v6.273c0 1.582-1.282 2.864-2.864 2.864h-.272C2.282 17.946 1 16.664 1 15.082V8.81c0-1.581 1.282-2.864 2.864-2.864zM14 9.222v5.724c0 .891-.396 1.683-1.014 2.233-.53.472-1.221.767-1.986.767-1.657 0-3-1.343-3-3v-9c0-.816.328-1.554.857-2.095.544-.557 1.302-.905 2.143-.905 1.657 0 3 1.343 3 3v3.276zm4-.276c-1.201 0-2.267.541-3 1.38V3.947c0-.758.29-1.442.753-1.97C16.303 1.35 17.1.947 18 .947c1.657 0 3 1.343 3 3v5h-3zm4-4.007c0-.812.326-1.545.85-2.085.544-.559 1.301-.909 2.143-.909h.014C26.66 1.946 28 3.286 28 4.939v4.006h-6V4.939z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#EF9645" d="M8.916 23.891s1.737.109 1.94-1.808l.016-4.161.128-.005v-.96c0-.952.572-1.769 1.389-2.133-.242.331-.283 7.176-.283 7.176 0 1.104.789 1.891 1.894 1.891.755 0 1.265-.314 1.606-.932-.458-.526-.734-1.206-.734-1.959 0-1.312.781-2.141 1.128-2.222 0 0 .056-.07.082-.084.368-.306.804-.535 1.291-.634l.02.001.261-.155h6.928c1.306 0 1.558.486 1.538.475l.02.011c.591.305 1.076.773 1.404 1.35-.025-.031-.681-.633-1.543-.633s-8-.047-8-.047c-1.104 0-1.925.833-1.925 1.938s.82 1.922 1.925 1.922l5.5-.016c.276 0 .591.317.591.594 0 .276-.314.578-.591.578 0 0-1.558-.069-2.847 1.25-1.209 1.238-2.078 3.803-2.078 5.672 0 .276-.299.578-.575.578s-.582-.302-.582-.578c0-3.01.941-5.525 2.75-6.891H18c-1 0-1.273-.244-1.474-.359.001.001-.701 1.359-2.526 1.359-.237 0-1.628-.047-2.487-1.266-1.125 1.422-2.575 1.266-2.575 1.266-.733 0-1.566-.328-1.91-.833C7.015 24.185 7 24.095 7 24v-1.917c0 1.059.857 1.808 1.916 1.808z"/><path fill="#FFDC5D" d="M24.581 18H18c-.208 0-.411.021-.607.061l-.073-.278-3.273-12.464s-.416-1.957 1.54-2.372c1.956-.416 2.372 1.54 2.372 1.54l3.097 11.569c.446.024.878.063 1.305.107l2.061-10.512s.188-1.991 2.18-1.804c1.991.188 1.803 2.179 1.803 2.179L26.34 17.187l-.221 1.194c-.464-.235-.982-.381-1.538-.381zM8.916 16h.168c1.059 0 1.916.858 1.916 1.917v4.166C11 23.142 10.143 24 9.084 24h-.168C7.857 24 7 23.142 7 22.083v-4.166C7 16.858 7.857 16 8.916 16zM15 21c0 .753.287 1.433.745 1.959C15.404 23.576 14.755 24 14 24c-1.104 0-2-.896-2-2v-6c0-.441.147-.845.389-1.176.364-.497.947-.824 1.611-.824 1.104 0 2 .896 2 2v2.778c-.609.549-1 1.336-1 2.222z"/><path fill="#FFDC5D" d="M9.062 25c1.024 0 1.925-.526 2.45-1.322.123.183.271.346.431.497.049.046.102.085.155.128.119.099.243.189.377.269.066.039.132.074.201.108.14.069.285.125.435.172.067.021.131.046.2.062.223.052.452.086.689.086.236 0 .461-.036.681-.089.076-.018.148-.042.223-.066.137-.044.269-.099.396-.161.082-.04.163-.076.24-.124.164-.1.318-.213.46-.341.202-.184.384-.387.53-.618l-.003-.003c.2.115.473.402 1.473.402h2.537c-1.809 1.365-3.037 3.99-3.037 7 0 .276.224.5.5.5s.5-.224.5-.5c0-3.859 2.187-7 4.875-7h.125c.276 0 .5-.224.5-.5s-.224-.5-.5-.5H18c-1.104 0-2-.896-2-2s.896-2 2-2h8c.032 0 .062.008.094.01.073.003.145.01.216.022.062.01.122.021.182.037.064.017.125.035.187.058.062.022.122.047.181.075.057.027.111.058.165.09.056.033.109.067.161.107.052.038.102.08.15.124.046.041.09.084.132.13.027.029.051.06.075.091l.052.063c.038.051.073.102.106.156.034.056.064.112.093.171.03.062.056.125.08.19.012.031.029.06.039.093L29 24c.103.335.479 1.871.411 2.191C29.411 31 24.715 36 19 36c-6.537 0-11.844-5.231-11.986-11.734l.014.01c.515.445 1.176.724 1.91.724h.124z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#BE1931" d="M35.885 11.833c0-5.45-4.418-9.868-9.867-9.868-3.308 0-6.227 1.633-8.018 4.129-1.791-2.496-4.71-4.129-8.017-4.129-5.45 0-9.868 4.417-9.868 9.868 0 .772.098 1.52.266 2.241C1.751 22.587 11.216 31.568 18 34.034c6.783-2.466 16.249-11.447 17.617-19.959.17-.721.268-1.469.268-2.242z"/></svg> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 22 22"> | ||
2 | + <g fill="none" fill-rule="evenodd"> | ||
3 | + <path d="M1 1h20v20H1z"/> | ||
4 | + <path fill="#027FFF" fill-rule="nonzero" d="M11 18.438a7.438 7.438 0 1 0 0-14.876 7.438 7.438 0 0 0 0 14.876zm0 1.062a8.5 8.5 0 1 1 0-17 8.5 8.5 0 0 1 0 17zM7.812 9.937a1.062 1.062 0 1 0 0-2.124 1.062 1.062 0 0 0 0 2.125zm6.375 0a1.063 1.063 0 1 0 0-2.125 1.063 1.063 0 0 0 0 2.125zM11 16.232a3.27 3.27 0 0 0 3.27-3.27H7.73a3.27 3.27 0 0 0 3.27 3.27z"/> | ||
5 | + </g> | ||
6 | +</svg> |
rf-blog/code/client/src/images/favicon.ico
0 → 100644
No preview for this file type
22.2 KB
10.8 KB
rf-blog/code/client/src/images/loading.gif
0 → 100644
108 KB
rf-blog/code/client/src/images/logo.png
0 → 100644
3.77 KB
rf-blog/code/client/src/images/none-data.jpg
0 → 100644
8.17 KB
rf-blog/code/client/src/main.js
0 → 100644
1 | +import Vue from "vue"; | ||
2 | +import App from "./App.vue"; | ||
3 | +import router from "./router"; | ||
4 | +import store from "./store"; | ||
5 | +import "element-ui/lib/theme-chalk/index.css"; | ||
6 | +import "./style/index.less"; | ||
7 | + | ||
8 | +import * as filters from "./filters"; | ||
9 | +Object.keys(filters).forEach((key) => { | ||
10 | + Vue.filter(key, filters[key]); | ||
11 | +}); | ||
12 | +import "./utils/iconfont"; | ||
13 | +import "./components/common/index"; | ||
14 | + | ||
15 | +import { Loading } from "element-ui"; | ||
16 | +Vue.use(Loading.directive); | ||
17 | + | ||
18 | +import VueLazyload from "vue-lazyload"; | ||
19 | +const loadimage = require("./images/loading.gif"); | ||
20 | +const errorimage = require("./images/load-error.jpeg"); | ||
21 | + | ||
22 | +Vue.use(VueLazyload, { | ||
23 | + preLoad: 1.3, // 提前加载高度(1 表示 1 屏的高度) | ||
24 | + error: errorimage, | ||
25 | + loading: loadimage, | ||
26 | + attempt: 1, // 加载错误后最大尝试次数 | ||
27 | +}); | ||
28 | + | ||
29 | +new Vue({ | ||
30 | + router, | ||
31 | + store, | ||
32 | + render: (h) => h(App), | ||
33 | + created() {}, | ||
34 | +}).$mount("#app"); |
rf-blog/code/client/src/mixins/label.js
0 → 100644
1 | +// 获取标签的背景色 | ||
2 | +import { mapGetters } from "vuex"; | ||
3 | +export default { | ||
4 | + computed: { | ||
5 | + ...mapGetters({ | ||
6 | + labelList: "label/labelList", | ||
7 | + }), | ||
8 | + getLabelColor({ labelList }) { | ||
9 | + return (labelName) => { | ||
10 | + if (labelList && labelList.length) { | ||
11 | + let labelIndex = 0; | ||
12 | + labelList.forEach((item, index) => { | ||
13 | + if (labelName === item.label) { | ||
14 | + labelIndex = index; | ||
15 | + } | ||
16 | + }); | ||
17 | + return labelList[labelIndex].bgColor; | ||
18 | + } | ||
19 | + return ""; | ||
20 | + }; | ||
21 | + }, | ||
22 | + }, | ||
23 | +}; |
rf-blog/code/client/src/mixins/like.js
0 → 100644
1 | +// 点赞操作 | ||
2 | + | ||
3 | +import { apiUpdateLikes } from "api/blog"; | ||
4 | +export default { | ||
5 | + computed: { | ||
6 | + getLikesNumber({ likeList }) { | ||
7 | + return (id, likes) => (likeList.includes(id) ? likes + 1 : likes); | ||
8 | + }, | ||
9 | + getLikesColor({ likeList }) { | ||
10 | + return (id) => likeList.includes(id); | ||
11 | + }, | ||
12 | + }, | ||
13 | + data() { | ||
14 | + return { | ||
15 | + currentId: "", // 当前id | ||
16 | + isLike: false, // 是否点赞 | ||
17 | + likeList: [], | ||
18 | + }; | ||
19 | + }, | ||
20 | + methods: { | ||
21 | + // 点赞 | ||
22 | + handleLikes(id) { | ||
23 | + if (this.likeList.includes(id)) { | ||
24 | + this.isLike = true; | ||
25 | + this.likeList.splice(this.likeList.indexOf(id), 1); | ||
26 | + } else { | ||
27 | + this.isLike = false; | ||
28 | + this.likeList.push(id); | ||
29 | + } | ||
30 | + this.currentId = id; | ||
31 | + return apiUpdateLikes({ _id: id, isLike: this.isLike }) | ||
32 | + .then((res) => {}) | ||
33 | + .catch((err) => { | ||
34 | + console.log(err); | ||
35 | + }) | ||
36 | + .finally(() => {}); | ||
37 | + }, | ||
38 | + }, | ||
39 | +}; |
rf-blog/code/client/src/router/index.js
0 → 100644
1 | +import Vue from "vue"; | ||
2 | +import Router from "vue-router"; | ||
3 | +Vue.use(Router); | ||
4 | + | ||
5 | +// 解决同一页面,参数不同的路由报错 | ||
6 | +const VueRouterPush = Router.prototype.push; | ||
7 | +Router.prototype.push = function push(to) { | ||
8 | + return VueRouterPush.call(this, to).catch((err) => err); | ||
9 | +}; | ||
10 | + | ||
11 | +/** | ||
12 | + * 加载模块 | ||
13 | + * @param {string | Component} component 路径或组件 | ||
14 | + * @param {boolean} lazy 是否懒加载 | ||
15 | + * @returns {Function | object} 懒加载方法或组件对象 | ||
16 | + */ | ||
17 | +const loadComponent = (component, lazy = true) => | ||
18 | + lazy ? () => import(`views/${component}.vue`) : component; | ||
19 | + | ||
20 | +const router = new Router({ | ||
21 | + // mode: 'history', | ||
22 | + routes: [ | ||
23 | + { | ||
24 | + path: "/index", | ||
25 | + component: loadComponent("home/index"), | ||
26 | + meta: { | ||
27 | + title: "首页", | ||
28 | + }, | ||
29 | + }, | ||
30 | + { | ||
31 | + path: "/label", | ||
32 | + component: loadComponent("home/label"), | ||
33 | + children: [ | ||
34 | + { | ||
35 | + path: ":keyword", | ||
36 | + component: loadComponent("home/components/blogClassify"), | ||
37 | + meta: { | ||
38 | + title: "文章分类", | ||
39 | + }, | ||
40 | + }, | ||
41 | + ], | ||
42 | + }, | ||
43 | + { | ||
44 | + path: "/article/detail", | ||
45 | + component: loadComponent("article/detail"), | ||
46 | + children: [ | ||
47 | + { | ||
48 | + path: ":id", | ||
49 | + component: loadComponent("article/components/detailContent"), | ||
50 | + meta: { | ||
51 | + title: "文章详情", | ||
52 | + }, | ||
53 | + }, | ||
54 | + ], | ||
55 | + }, | ||
56 | + { | ||
57 | + path: "/message", | ||
58 | + component: loadComponent("message/index"), | ||
59 | + meta: { | ||
60 | + title: "留言板", | ||
61 | + }, | ||
62 | + }, | ||
63 | + { | ||
64 | + path: "/myself", | ||
65 | + component: loadComponent("myself/index"), | ||
66 | + meta: { | ||
67 | + title: "关于我们", | ||
68 | + }, | ||
69 | + }, | ||
70 | + { | ||
71 | + path: "*", | ||
72 | + redirect: "/index", | ||
73 | + }, | ||
74 | + ], | ||
75 | +}); | ||
76 | + | ||
77 | +router.beforeEach((to, from, next) => { | ||
78 | + /* 路由发生变化修改页面title */ | ||
79 | + if (to.meta && to.meta.title) { | ||
80 | + document.title = to.meta.title; | ||
81 | + } | ||
82 | + next(); | ||
83 | +}); | ||
84 | + | ||
85 | +export default router; |
rf-blog/code/client/src/store/index.js
0 → 100644
1 | +import Vue from "vue"; | ||
2 | +import Vuex from "vuex"; | ||
3 | +import label from "./modules/label"; | ||
4 | +import search from "./modules/search"; | ||
5 | + | ||
6 | +Vue.use(Vuex); | ||
7 | + | ||
8 | +const store = new Vuex.Store({ | ||
9 | + state: {}, | ||
10 | + mutations: {}, | ||
11 | + actions: {}, | ||
12 | + modules: { | ||
13 | + label, | ||
14 | + search, | ||
15 | + }, | ||
16 | +}); | ||
17 | + | ||
18 | +export default store; |
1 | +import { apiGetLabelList } from "src/api/label"; | ||
2 | +export default { | ||
3 | + namespaced: true, | ||
4 | + state: { | ||
5 | + labelList: null, | ||
6 | + }, | ||
7 | + mutations: { | ||
8 | + setLabelList(state, data) { | ||
9 | + state.labelList = data; | ||
10 | + }, | ||
11 | + }, | ||
12 | + actions: { | ||
13 | + getLabelList(context) { | ||
14 | + let params = { | ||
15 | + pageindex: 1, | ||
16 | + pagesize: 50, | ||
17 | + }; | ||
18 | + return apiGetLabelList(params) | ||
19 | + .then((res) => { | ||
20 | + let { list } = res.data; | ||
21 | + context.commit("setLabelList", list); | ||
22 | + }) | ||
23 | + .catch((err) => { | ||
24 | + console.log(err); | ||
25 | + }); | ||
26 | + }, | ||
27 | + }, | ||
28 | + getters: { | ||
29 | + labelList(state) { | ||
30 | + return state.labelList; | ||
31 | + }, | ||
32 | + }, | ||
33 | +}; |
rf-blog/code/client/src/style/index.less
0 → 100644
1 | +@keyframes easeBarrageMove { | ||
2 | + 100% {left: -50%;} | ||
3 | +} | ||
4 | + | ||
5 | +@keyframes btnGroups { | ||
6 | + 0% {transform: scale(1.2, 0.8);} | ||
7 | + 1% {transform: scale(1.18, 0.82);} | ||
8 | + 2% {transform: scale(1.16, 0.84);} | ||
9 | + 3% {transform: scale(1.13, 0.87);} | ||
10 | + 4% {transform: scale(1.1, 0.9);} | ||
11 | + 5% {transform: scale(1.07, 0.93);} | ||
12 | + 6% {transform: scale(1.04, 0.96);} | ||
13 | + 7% {transform: scale(1.01, 0.99);} | ||
14 | + 8% {transform: scale(0.99, 1.01);} | ||
15 | + 9% {transform: scale(0.97, 1.03);} | ||
16 | + 10% {transform: scale(0.95, 1.05);} | ||
17 | + 11% {transform: scale(0.94, 1.06);} | ||
18 | + 12% {transform: scale(0.93, 1.07);} | ||
19 | + 13% {transform: scale(0.93, 1.07);} | ||
20 | + 14% {transform: scale(0.93, 1.07);} | ||
21 | + 15% {transform: scale(0.93, 1.07);} | ||
22 | + 16% {transform: scale(0.94, 1.06);} | ||
23 | + 17% {transform: scale(0.94, 1.06);} | ||
24 | + 18% {transform: scale(0.95, 1.05);} | ||
25 | + 19% {transform: scale(0.96, 1.04);} | ||
26 | + 20% {transform: scale(0.98, 1.02);} | ||
27 | + 21% {transform: scale(0.99, 1.01);} | ||
28 | + 22% {transform: scale(1, 1);} | ||
29 | + 23% {transform: scale(1, 1);} | ||
30 | + 24% {transform: scale(1.01, 0.99);} | ||
31 | + 25% {transform: scale(1.02, 0.98);} | ||
32 | + 26% {transform: scale(1.02, 0.98);} | ||
33 | + 27% {transform: scale(1.02, 0.98);} | ||
34 | + 28% {transform: scale(1.03, 0.97);} | ||
35 | + 29% {transform: scale(1.03, 0.97);} | ||
36 | + 30% {transform: scale(1.02, 0.98);} | ||
37 | + 31% {transform: scale(1.02, 0.98);} | ||
38 | + 32% {transform: scale(1.02, 0.98);} | ||
39 | + 33% {transform: scale(1.02, 0.98);} | ||
40 | + 34% {transform: scale(1.01, 0.99);} | ||
41 | + 35% {transform: scale(1.01, 0.99);} | ||
42 | + 36% {transform: scale(1.01, 0.99);} | ||
43 | + 37% {transform: scale(1, 1);} | ||
44 | + 38% {transform: scale(1, 1);} | ||
45 | + 39% {transform: scale(1, 1);} | ||
46 | + 40% {transform: scale(0.99, 1.01);} | ||
47 | + 41% {transform: scale(0.99, 1.01);} | ||
48 | + 42% {transform: scale(0.99, 1.01);} | ||
49 | + 43% {transform: scale(0.99, 1.01);} | ||
50 | + 44% {transform: scale(0.99, 1.01);} | ||
51 | + 45% {transform: scale(0.99, 1.01);} | ||
52 | + 46% {transform: scale(0.99, 1.01);} | ||
53 | + 47% {transform: scale(0.99, 1.01);} | ||
54 | + 48% {transform: scale(0.99, 1.01);} | ||
55 | + 49% {transform: scale(1, 1);} | ||
56 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +.home-wrapper { | ||
2 | + padding-top: 50px; | ||
3 | + min-height: @min-body-height; | ||
4 | + .home-body { | ||
5 | + width: 1200px; | ||
6 | + margin: 0 auto 20px; | ||
7 | + display: flex; | ||
8 | + } | ||
9 | +} | ||
10 | +.side-wrapper { | ||
11 | + flex: 1; | ||
12 | + margin-left: 24px; | ||
13 | +} | ||
14 | + | ||
15 | +.side-title { | ||
16 | + padding: 0 10px; | ||
17 | + line-height: 50px; | ||
18 | + height: 50px; | ||
19 | + font-size: 18px; | ||
20 | + border-bottom: 1px solid #e5e5e5; | ||
21 | + color: @mainColor; | ||
22 | + font-weight: bold; | ||
23 | + position: relative; | ||
24 | + display: flex; | ||
25 | + align-items: center; | ||
26 | + svg { | ||
27 | + margin-right: 6px; | ||
28 | + } | ||
29 | + &::after { | ||
30 | + content: " "; | ||
31 | + position: absolute; | ||
32 | + height: 2px; | ||
33 | + width: 10%; | ||
34 | + left: 0; | ||
35 | + bottom: -1px; | ||
36 | + background: @mainColor; | ||
37 | + transition: 2s ease all; | ||
38 | + } | ||
39 | + &:hover { | ||
40 | + &::after { | ||
41 | + width: 100%; | ||
42 | + } | ||
43 | + } | ||
44 | +} |
rf-blog/code/client/src/style/less/init.less
0 → 100644
1 | +body { | ||
2 | + background: @backgroundColor; | ||
3 | + border-top: 1px solid transparent; | ||
4 | + margin-top: -1px; | ||
5 | + font-family: "Arial", "Microsoft YaHei", "黑体", "宋体", sans-serif; | ||
6 | +} | ||
7 | + | ||
8 | +button { | ||
9 | + border: none; | ||
10 | + background: none; | ||
11 | + outline: none; | ||
12 | +} | ||
13 | +input, | ||
14 | +textarea { | ||
15 | + -webkit-appearance: none; | ||
16 | +} | ||
17 | + | ||
18 | +.icon { | ||
19 | + width: 1em; | ||
20 | + height: 1em; | ||
21 | + vertical-align: -0.15em; | ||
22 | + fill: currentColor; | ||
23 | + overflow: hidden; | ||
24 | +} | ||
25 | + | ||
26 | +::-webkit-scrollbar { | ||
27 | + width: 4px; | ||
28 | + height: 4px; | ||
29 | +} | ||
30 | + | ||
31 | +::-webkit-scrollbar-thumb { | ||
32 | + opacity: 0.8; | ||
33 | + background: #ddd; | ||
34 | + border-radius: 4px; | ||
35 | + transition: all 0.5s; | ||
36 | +} | ||
37 | + | ||
38 | +/* nprogress styles */ | ||
39 | +/* Make clicks pass-through */ | ||
40 | + | ||
41 | +#nprogress { | ||
42 | + pointer-events: none; | ||
43 | +} | ||
44 | +#nprogress .bar { | ||
45 | + background: #dfa400; | ||
46 | + position: fixed; | ||
47 | + z-index: 1031; | ||
48 | + top: 0; | ||
49 | + left: 0; | ||
50 | + width: 100%; | ||
51 | + height: 2px; | ||
52 | +} | ||
53 | + | ||
54 | +/* Fancy blur effect */ | ||
55 | + | ||
56 | +#nprogress .peg { | ||
57 | + display: block; | ||
58 | + position: absolute; | ||
59 | + right: 0px; | ||
60 | + width: 100px; | ||
61 | + height: 100%; | ||
62 | + box-shadow: 0 0 10px #dfa400, 0 0 5px #dfa400; | ||
63 | + opacity: 1; | ||
64 | + transform: rotate(3deg) translate(0px, -4px); | ||
65 | +} | ||
66 | + | ||
67 | +/* Remove these to get rid of the spinner */ | ||
68 | + | ||
69 | +#nprogress .spinner { | ||
70 | + display: block; | ||
71 | + position: fixed; | ||
72 | + z-index: 1031; | ||
73 | + top: 15px; | ||
74 | + right: 15px; | ||
75 | +} | ||
76 | + | ||
77 | +#nprogress .spinner-icon { | ||
78 | + width: 18px; | ||
79 | + height: 18px; | ||
80 | + box-sizing: border-box; | ||
81 | + border: solid 2px transparent; | ||
82 | + border-top-color: #dfa400; | ||
83 | + border-left-color: #dfa400; | ||
84 | + border-radius: 50%; | ||
85 | + animation: nprogress-spinner 400ms linear infinite; | ||
86 | +} | ||
87 | + | ||
88 | +.nprogress-custom-parent { | ||
89 | + overflow: hidden; | ||
90 | + position: relative; | ||
91 | +} | ||
92 | + | ||
93 | +.nprogress-custom-parent #nprogress .spinner, | ||
94 | +.nprogress-custom-parent #nprogress .bar { | ||
95 | + position: absolute; | ||
96 | +} | ||
97 | + | ||
98 | +@keyframes nprogress-spinner { | ||
99 | + 0% { | ||
100 | + transform: rotate(0deg); | ||
101 | + } | ||
102 | + 100% { | ||
103 | + transform: rotate(360deg); | ||
104 | + } | ||
105 | +} |
1 | +.fmt { | ||
2 | + line-height: 1.6; | ||
3 | + word-wrap: break-word; | ||
4 | + color: @mainColor; | ||
5 | +} | ||
6 | +.fmt a { | ||
7 | + color: #009a61; | ||
8 | + text-decoration: none; | ||
9 | +} | ||
10 | +.fmt h1 { | ||
11 | + font-size: 2.25em; | ||
12 | +} | ||
13 | + | ||
14 | +.fmt h2 { | ||
15 | + font-size: 1.75em; | ||
16 | +} | ||
17 | + | ||
18 | +.fmt h3 { | ||
19 | + font-size: 1.5em; | ||
20 | +} | ||
21 | + | ||
22 | +.fmt h4 { | ||
23 | + font-size: 1.25em; | ||
24 | +} | ||
25 | + | ||
26 | +.fmt h5 { | ||
27 | + font-size: 1em; | ||
28 | +} | ||
29 | + | ||
30 | +.fmt h6 { | ||
31 | + font-size: 0.86em; | ||
32 | +} | ||
33 | +.fmt p { | ||
34 | + margin-top: 0.86em; | ||
35 | + line-height: 1.8em; | ||
36 | +} | ||
37 | + | ||
38 | +.fmt h1, | ||
39 | +.fmt h2, | ||
40 | +.fmt h3, | ||
41 | +.fmt h4, | ||
42 | +.fmt h5, | ||
43 | +.fmt h6 { | ||
44 | + margin-top: 1.2em; | ||
45 | +} | ||
46 | + | ||
47 | +.fmt h1 + .widget-codetool + pre, | ||
48 | +.fmt h2 + .widget-codetool + pre, | ||
49 | +.fmt h3 + .widget-codetool + pre { | ||
50 | + margin-top: 1.2em !important; | ||
51 | +} | ||
52 | + | ||
53 | +.fmt h1, | ||
54 | +.fmt h2 { | ||
55 | + border-bottom: 1px solid #eee; | ||
56 | + padding-bottom: 10px; | ||
57 | +} | ||
58 | + | ||
59 | +.fmt > h1:first-child, | ||
60 | +.fmt h2:first-child, | ||
61 | +.fmt h3:first-child, | ||
62 | +.fmt h4:first-child, | ||
63 | +.fmt p:first-child, | ||
64 | +.fmt ul:first-child, | ||
65 | +.fmt ol:first-child, | ||
66 | +.fmt blockquote:first-child { | ||
67 | + margin-top: 0; | ||
68 | +} | ||
69 | + | ||
70 | +.fmt ul, | ||
71 | +.fmt ol { | ||
72 | + margin-left: 2em; | ||
73 | + margin-top: 0.86em; | ||
74 | + padding-left: 0; | ||
75 | +} | ||
76 | + | ||
77 | +.fmt ul li, | ||
78 | +.fmt ol li { | ||
79 | + margin: 0.3em 0; | ||
80 | + list-style: unset; | ||
81 | +} | ||
82 | + | ||
83 | +.fmt ul ul, | ||
84 | +.fmt ul ol, | ||
85 | +.fmt ol ul, | ||
86 | +.fmt ol ol { | ||
87 | + margin-top: 0; | ||
88 | + margin-bottom: 0; | ||
89 | +} | ||
90 | + | ||
91 | +.fmt ul p, | ||
92 | +.fmt ol p { | ||
93 | + margin: 0; | ||
94 | +} | ||
95 | + | ||
96 | +.fmt p:last-child { | ||
97 | + margin-bottom: 0; | ||
98 | +} | ||
99 | + | ||
100 | +.fmt p > p:empty, | ||
101 | +.fmt div > p:empty, | ||
102 | +.fmt p > div:empty, | ||
103 | +.fmt div > div:empty, | ||
104 | +.fmt div > br:only-child, | ||
105 | +.fmt p + br, | ||
106 | +.fmt img + br { | ||
107 | + display: none; | ||
108 | +} | ||
109 | + | ||
110 | +.fmt img, | ||
111 | +.fmt video, | ||
112 | +.fmt audio { | ||
113 | + position: static !important; | ||
114 | + max-width: 100%; | ||
115 | +} | ||
116 | + | ||
117 | +.fmt img { | ||
118 | + padding: 3px; | ||
119 | + border: 1px solid #ddd; | ||
120 | +} | ||
121 | + | ||
122 | +.fmt img.emoji { | ||
123 | + padding: 0; | ||
124 | + border: none; | ||
125 | +} | ||
126 | + | ||
127 | +.fmt blockquote { | ||
128 | + border-left: 2px solid #009a61; | ||
129 | + background: @thinBgColor; | ||
130 | + color: @thinColor; | ||
131 | + font-size: 1em; | ||
132 | +} | ||
133 | + | ||
134 | +.fmt pre, | ||
135 | +.fmt code { | ||
136 | + font-size: 0.93em; | ||
137 | + margin-top: 0.86em; | ||
138 | +} | ||
139 | + | ||
140 | +.fmt pre { | ||
141 | + font-family: "Source Code Pro", Consolas, Menlo, Monaco, "Courier New", | ||
142 | + monospace; | ||
143 | + padding: 1em; | ||
144 | + margin-top: 0.86em; | ||
145 | + border: none; | ||
146 | + overflow: auto; | ||
147 | + line-height: 1.45; | ||
148 | + max-height: 35em; | ||
149 | + position: relative; | ||
150 | + background: url("../../images/blueprint.png") rgba(233, 234, 237, 0.5); | ||
151 | + background-size: 30px, 30px; | ||
152 | + | ||
153 | + font-size: 12px; | ||
154 | + -webkit-overflow-scrolling: touch; | ||
155 | + border-radius: 5px; | ||
156 | +} | ||
157 | + | ||
158 | +.fmt pre code { | ||
159 | + background: none; | ||
160 | + font-size: 1em; | ||
161 | + overflow-wrap: normal; | ||
162 | + white-space: inherit; | ||
163 | +} | ||
164 | + | ||
165 | +.fmt hr { | ||
166 | + margin: 1.5em auto; | ||
167 | + border-top: 2px dotted #eee; | ||
168 | +} | ||
169 | + | ||
170 | +.fmt kbd { | ||
171 | + margin: 0 4px; | ||
172 | + padding: 3px 4px; | ||
173 | + background: #eee; | ||
174 | + color: @thinColor; | ||
175 | +} | ||
176 | + | ||
177 | +.fmt .x-scroll { | ||
178 | + overflow-x: auto; | ||
179 | +} | ||
180 | + | ||
181 | +.fmt table { | ||
182 | + width: 100%; | ||
183 | +} | ||
184 | + | ||
185 | +.fmt table th, | ||
186 | +.fmt table td { | ||
187 | + border: 1px solid #e6e6e6; | ||
188 | + padding: 5px 8px; | ||
189 | + word-break: normal; | ||
190 | +} | ||
191 | + | ||
192 | +.fmt table th { | ||
193 | + background: #f3f3f3; | ||
194 | +} | ||
195 | + | ||
196 | +.fmt a:not(.btn) { | ||
197 | + border-bottom: 1px solid rgba(0, 154, 97, 0.25); | ||
198 | + padding-bottom: 1px; | ||
199 | +} | ||
200 | + | ||
201 | +.fmt a:not(.btn):hover { | ||
202 | + border-bottom: 1px solid #009a61; | ||
203 | + text-decoration: none; | ||
204 | +} | ||
205 | + | ||
206 | +/* | ||
207 | + | ||
208 | +github.com style (c) Vasily Polovnyov <vast@whiteants.net> | ||
209 | + | ||
210 | +*/ | ||
211 | + | ||
212 | +.hljs { | ||
213 | + display: block; | ||
214 | + overflow-x: auto; | ||
215 | + padding: 0.5em; | ||
216 | + color: @mainColor; | ||
217 | + background: #f8f8f8; | ||
218 | +} | ||
219 | + | ||
220 | +.hljs-comment, | ||
221 | +.hljs-quote { | ||
222 | + color: #998; | ||
223 | + font-style: italic; | ||
224 | +} | ||
225 | + | ||
226 | +.hljs-keyword, | ||
227 | +.hljs-selector-tag, | ||
228 | +.hljs-subst { | ||
229 | + color: @mainColor; | ||
230 | + font-weight: bold; | ||
231 | +} | ||
232 | + | ||
233 | +.hljs-number, | ||
234 | +.hljs-literal, | ||
235 | +.hljs-variable, | ||
236 | +.hljs-template-variable, | ||
237 | +.hljs-tag .hljs-attr { | ||
238 | + color: #008080; | ||
239 | +} | ||
240 | + | ||
241 | +.hljs-string, | ||
242 | +.hljs-doctag { | ||
243 | + color: #d14; | ||
244 | +} | ||
245 | + | ||
246 | +.hljs-title, | ||
247 | +.hljs-section, | ||
248 | +.hljs-selector-id { | ||
249 | + color: #900; | ||
250 | + font-weight: bold; | ||
251 | +} | ||
252 | + | ||
253 | +.hljs-subst { | ||
254 | + font-weight: normal; | ||
255 | +} | ||
256 | + | ||
257 | +.hljs-type, | ||
258 | +.hljs-class .hljs-title { | ||
259 | + color: #458; | ||
260 | + font-weight: bold; | ||
261 | +} | ||
262 | + | ||
263 | +.hljs-tag, | ||
264 | +.hljs-name, | ||
265 | +.hljs-attribute { | ||
266 | + color: #000080; | ||
267 | + font-weight: normal; | ||
268 | +} | ||
269 | + | ||
270 | +.hljs-regexp, | ||
271 | +.hljs-link { | ||
272 | + color: #009926; | ||
273 | +} | ||
274 | + | ||
275 | +.hljs-symbol, | ||
276 | +.hljs-bullet { | ||
277 | + color: #990073; | ||
278 | +} | ||
279 | + | ||
280 | +.hljs-built_in, | ||
281 | +.hljs-builtin-name { | ||
282 | + color: #0086b3; | ||
283 | +} | ||
284 | + | ||
285 | +.hljs-meta { | ||
286 | + color: @assistColor; | ||
287 | + font-weight: bold; | ||
288 | +} | ||
289 | + | ||
290 | +.hljs-deletion { | ||
291 | + background: #fdd; | ||
292 | +} | ||
293 | + | ||
294 | +.hljs-addition { | ||
295 | + background: #dfd; | ||
296 | +} | ||
297 | + | ||
298 | +.hljs-emphasis { | ||
299 | + font-style: italic; | ||
300 | +} | ||
301 | + | ||
302 | +.hljs-strong { | ||
303 | + font-weight: bold; | ||
304 | +} |
1 | +/* normalize.css */ | ||
2 | +html { | ||
3 | + line-height: 1.15; /* 1 */ | ||
4 | + -ms-text-size-adjust: 100%; /* 2 */ | ||
5 | + -webkit-text-size-adjust: 100%; /* 2 */ | ||
6 | +} | ||
7 | + | ||
8 | +body { | ||
9 | + margin: 0; | ||
10 | +} | ||
11 | + | ||
12 | +article, | ||
13 | +aside, | ||
14 | +footer, | ||
15 | +header, | ||
16 | +nav, | ||
17 | +section { | ||
18 | + display: block; | ||
19 | +} | ||
20 | + | ||
21 | +h1 { | ||
22 | + font-size: 2em; | ||
23 | + margin: 0.67em 0; | ||
24 | +} | ||
25 | + | ||
26 | +figcaption, | ||
27 | +figure, | ||
28 | +main { | ||
29 | + /* 1 */ | ||
30 | + display: block; | ||
31 | +} | ||
32 | + | ||
33 | +figure { | ||
34 | + margin: 1em 40px; | ||
35 | +} | ||
36 | + | ||
37 | +hr { | ||
38 | + box-sizing: content-box; /* 1 */ | ||
39 | + height: 0; /* 1 */ | ||
40 | + overflow: visible; /* 2 */ | ||
41 | +} | ||
42 | + | ||
43 | +pre { | ||
44 | + font-family: monospace, monospace; /* 1 */ | ||
45 | + font-size: 1em; /* 2 */ | ||
46 | +} | ||
47 | + | ||
48 | +a { | ||
49 | + background-color: transparent; /* 1 */ | ||
50 | + -webkit-text-decoration-skip: objects; /* 2 */ | ||
51 | +} | ||
52 | + | ||
53 | +abbr[title] { | ||
54 | + border-bottom: none; /* 1 */ | ||
55 | + text-decoration: underline; /* 2 */ | ||
56 | + text-decoration: underline dotted; /* 2 */ | ||
57 | +} | ||
58 | + | ||
59 | +b, | ||
60 | +strong { | ||
61 | + font-weight: inherit; | ||
62 | +} | ||
63 | + | ||
64 | +b, | ||
65 | +strong { | ||
66 | + font-weight: bolder; | ||
67 | +} | ||
68 | + | ||
69 | +code, | ||
70 | +kbd, | ||
71 | +samp { | ||
72 | + font-family: monospace, monospace; /* 1 */ | ||
73 | + font-size: 1em; /* 2 */ | ||
74 | +} | ||
75 | + | ||
76 | +dfn { | ||
77 | + font-style: italic; | ||
78 | +} | ||
79 | + | ||
80 | +mark { | ||
81 | + background-color: #ff0; | ||
82 | + color: @mainColor; | ||
83 | +} | ||
84 | + | ||
85 | +small { | ||
86 | + font-size: 80%; | ||
87 | +} | ||
88 | + | ||
89 | +sub, | ||
90 | +sup { | ||
91 | + font-size: 75%; | ||
92 | + line-height: 0; | ||
93 | + position: relative; | ||
94 | + vertical-align: baseline; | ||
95 | +} | ||
96 | + | ||
97 | +sub { | ||
98 | + bottom: -0.25em; | ||
99 | +} | ||
100 | + | ||
101 | +sup { | ||
102 | + top: -0.5em; | ||
103 | +} | ||
104 | + | ||
105 | +audio, | ||
106 | +video { | ||
107 | + display: inline-block; | ||
108 | +} | ||
109 | +audio:not([controls]) { | ||
110 | + display: none; | ||
111 | + height: 0; | ||
112 | +} | ||
113 | + | ||
114 | +img { | ||
115 | + border-style: none; | ||
116 | +} | ||
117 | + | ||
118 | +svg:not(:root) { | ||
119 | + overflow: hidden; | ||
120 | +} | ||
121 | + | ||
122 | +button, | ||
123 | +input, | ||
124 | +optgroup, | ||
125 | +select, | ||
126 | +textarea { | ||
127 | + font-family: sans-serif; /* 1 */ | ||
128 | + font-size: 100%; /* 1 */ | ||
129 | + line-height: 1.15; /* 1 */ | ||
130 | + margin: 0; /* 2 */ | ||
131 | +} | ||
132 | +button, | ||
133 | +input { | ||
134 | + /* 1 */ | ||
135 | + overflow: visible; | ||
136 | +} | ||
137 | +button, | ||
138 | +select { | ||
139 | + /* 1 */ | ||
140 | + text-transform: none; | ||
141 | +} | ||
142 | + | ||
143 | +button, | ||
144 | + html [type="button"], /* 1 */ | ||
145 | + [type="reset"], | ||
146 | + [type="submit"] { | ||
147 | + -webkit-appearance: button; /* 2 */ | ||
148 | +} | ||
149 | + | ||
150 | +button::-moz-focus-inner, | ||
151 | +[type="button"]::-moz-focus-inner, | ||
152 | +[type="reset"]::-moz-focus-inner, | ||
153 | +[type="submit"]::-moz-focus-inner { | ||
154 | + border-style: none; | ||
155 | + padding: 0; | ||
156 | +} | ||
157 | + | ||
158 | +button:-moz-focusring, | ||
159 | +[type="button"]:-moz-focusring, | ||
160 | +[type="reset"]:-moz-focusring, | ||
161 | +[type="submit"]:-moz-focusring { | ||
162 | + outline: 1px dotted ButtonText; | ||
163 | +} | ||
164 | + | ||
165 | +fieldset { | ||
166 | + padding: 0.35em 0.75em 0.625em; | ||
167 | +} | ||
168 | + | ||
169 | +legend { | ||
170 | + box-sizing: border-box; /* 1 */ | ||
171 | + color: inherit; /* 2 */ | ||
172 | + display: table; /* 1 */ | ||
173 | + max-width: 100%; /* 1 */ | ||
174 | + padding: 0; /* 3 */ | ||
175 | + white-space: normal; /* 1 */ | ||
176 | +} | ||
177 | + | ||
178 | +progress { | ||
179 | + display: inline-block; /* 1 */ | ||
180 | + vertical-align: baseline; /* 2 */ | ||
181 | +} | ||
182 | + | ||
183 | +textarea { | ||
184 | + overflow: auto; | ||
185 | +} | ||
186 | + | ||
187 | +[type="checkbox"], | ||
188 | +[type="radio"] { | ||
189 | + box-sizing: border-box; /* 1 */ | ||
190 | + padding: 0; /* 2 */ | ||
191 | +} | ||
192 | + | ||
193 | +[type="number"]::-webkit-inner-spin-button, | ||
194 | +[type="number"]::-webkit-outer-spin-button { | ||
195 | + height: auto; | ||
196 | +} | ||
197 | + | ||
198 | +[type="search"] { | ||
199 | + -webkit-appearance: textfield; /* 1 */ | ||
200 | + outline-offset: -2px; /* 2 */ | ||
201 | +} | ||
202 | + | ||
203 | +[type="search"]::-webkit-search-cancel-button, | ||
204 | +[type="search"]::-webkit-search-decoration { | ||
205 | + -webkit-appearance: none; | ||
206 | +} | ||
207 | + | ||
208 | +::-webkit-file-upload-button { | ||
209 | + -webkit-appearance: button; /* 1 */ | ||
210 | + font: inherit; /* 2 */ | ||
211 | +} | ||
212 | + | ||
213 | +details, /* 1 */ | ||
214 | + menu { | ||
215 | + display: block; | ||
216 | +} | ||
217 | + | ||
218 | +summary { | ||
219 | + display: list-item; | ||
220 | +} | ||
221 | + | ||
222 | +canvas { | ||
223 | + display: inline-block; | ||
224 | +} | ||
225 | + | ||
226 | +template { | ||
227 | + display: none; | ||
228 | +} | ||
229 | + | ||
230 | +[hidden] { | ||
231 | + display: none; | ||
232 | +} | ||
233 | + | ||
234 | +/* reset */ | ||
235 | +* { | ||
236 | + box-sizing: border-box; | ||
237 | +} | ||
238 | +html, | ||
239 | +body { | ||
240 | + font: Oswald, "Open Sans", Helvetica, Arial, sans-serif; | ||
241 | +} | ||
242 | +/* 禁止长按链接与图片弹出菜单 */ | ||
243 | +a, | ||
244 | +img { | ||
245 | + -webkit-touch-callout: none; | ||
246 | +} | ||
247 | + | ||
248 | +/*ios android去除自带阴影的样式*/ | ||
249 | +a, | ||
250 | +input { | ||
251 | + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); | ||
252 | +} | ||
253 | + | ||
254 | +input[type="text"] { | ||
255 | + -webkit-appearance: none; | ||
256 | +} | ||
257 | + | ||
258 | +html, | ||
259 | +body, | ||
260 | +h1, | ||
261 | +h2, | ||
262 | +h3, | ||
263 | +h4, | ||
264 | +h5, | ||
265 | +h6, | ||
266 | +div, | ||
267 | +dl, | ||
268 | +dt, | ||
269 | +dd, | ||
270 | +ul, | ||
271 | +ol, | ||
272 | +li, | ||
273 | +p, | ||
274 | +blockquote, | ||
275 | +pre, | ||
276 | +hr, | ||
277 | +figure, | ||
278 | +table, | ||
279 | +caption, | ||
280 | +th, | ||
281 | +td, | ||
282 | +form, | ||
283 | +fieldset, | ||
284 | +legend, | ||
285 | +input, | ||
286 | +button, | ||
287 | +textarea, | ||
288 | +menu { | ||
289 | + margin: 0; | ||
290 | + padding: 0; | ||
291 | +} | ||
292 | +header, | ||
293 | +footer, | ||
294 | +section, | ||
295 | +article, | ||
296 | +aside, | ||
297 | +nav, | ||
298 | +hgroup, | ||
299 | +address, | ||
300 | +figure, | ||
301 | +figcaption, | ||
302 | +menu, | ||
303 | +details { | ||
304 | + display: block; | ||
305 | +} | ||
306 | +table { | ||
307 | + border-collapse: collapse; | ||
308 | + border-spacing: 0; | ||
309 | +} | ||
310 | +caption, | ||
311 | +th { | ||
312 | + text-align: left; | ||
313 | + font-weight: normal; | ||
314 | +} | ||
315 | +html, | ||
316 | +body, | ||
317 | +fieldset, | ||
318 | +img, | ||
319 | +iframe, | ||
320 | +abbr { | ||
321 | + border: 0; | ||
322 | +} | ||
323 | +i, | ||
324 | +cite, | ||
325 | +em, | ||
326 | +var, | ||
327 | +address, | ||
328 | +dfn { | ||
329 | + font-style: normal; | ||
330 | +} | ||
331 | +[hidefocus], | ||
332 | +summary { | ||
333 | + outline: 0; | ||
334 | +} | ||
335 | +li { | ||
336 | + list-style: none; | ||
337 | +} | ||
338 | +h1, | ||
339 | +h2, | ||
340 | +h3, | ||
341 | +h4, | ||
342 | +h5, | ||
343 | +h6, | ||
344 | +small { | ||
345 | + font-size: 100%; | ||
346 | +} | ||
347 | +sup, | ||
348 | +sub { | ||
349 | + font-size: 83%; | ||
350 | +} | ||
351 | +pre, | ||
352 | +code, | ||
353 | +kbd, | ||
354 | +samp { | ||
355 | + font-family: inherit; | ||
356 | +} | ||
357 | +q:before, | ||
358 | +q:after { | ||
359 | + content: none; | ||
360 | +} | ||
361 | +textarea { | ||
362 | + overflow: auto; | ||
363 | + resize: none; | ||
364 | +} | ||
365 | +label, | ||
366 | +summary { | ||
367 | + cursor: default; | ||
368 | +} | ||
369 | +a, | ||
370 | +button { | ||
371 | + cursor: pointer; | ||
372 | +} | ||
373 | +h1, | ||
374 | +h2, | ||
375 | +h3, | ||
376 | +h4, | ||
377 | +h5, | ||
378 | +h6, | ||
379 | +em, | ||
380 | +strong, | ||
381 | +b { | ||
382 | + font-weight: bold; | ||
383 | +} | ||
384 | +del, | ||
385 | +ins, | ||
386 | +u, | ||
387 | +s, | ||
388 | +a, | ||
389 | +a:hover { | ||
390 | + text-decoration: none; | ||
391 | +} |
rf-blog/code/client/src/utils/iconfont.js
0 → 100644
1 | +!function(l){var a,h,t,c,p,F='<svg><symbol id="icon-laborer" viewBox="0 0 1024 1024"><path d="M208 976v-33.39C208 810.83 344.11 704 512 704s304 106.83 304 238.61V976z" fill="#00B9FF" ></path><path d="M824 984H200v-41.39c0-66.24 32.71-128.4 92.1-175C350.92 721.43 429 696 512 696s161.08 25.43 219.9 71.59c59.39 46.62 92.1 108.78 92.1 175z m-608-16h592v-25.39C808 815.45 675.21 712 512 712S216 815.45 216 942.61z" fill="#222222" ></path><path d="M560 624h-96v90s0 54 48 54 48-54 48-54z" fill="#FFCEBF" ></path><path d="M512 776c-29.09 0-42.87-17.27-49.31-31.75A82.54 82.54 0 0 1 456 714v-98h112v98a82.54 82.54 0 0 1-6.69 30.25C554.87 758.73 541.09 776 512 776z m-40-144v82c0 1.86 0.69 46 40 46 16.69 0 28-7.28 34.69-22.25A67.2 67.2 0 0 0 552 714v-82z" fill="#222222" ></path><path d="M284.71 411.81m-58.14 0a58.14 58.14 0 1 0 116.28 0 58.14 58.14 0 1 0-116.28 0Z" fill="#FFCEBF" ></path><path d="M284.71 478a66.15 66.15 0 1 1 66.15-66.14A66.21 66.21 0 0 1 284.71 478z m0-116.29a50.15 50.15 0 1 0 50.15 50.15 50.21 50.21 0 0 0-50.15-50.2z" fill="#222222" ></path><path d="M739.29 411.81m-58.14 0a58.14 58.14 0 1 0 116.28 0 58.14 58.14 0 1 0-116.28 0Z" fill="#FFCEBF" ></path><path d="M739.29 478a66.15 66.15 0 1 1 66.14-66.14A66.22 66.22 0 0 1 739.29 478z m0-116.29a50.15 50.15 0 1 0 50.14 50.15 50.21 50.21 0 0 0-50.14-50.2z" fill="#222222" ></path><path d="M743.73 312.57l0.84 111.69C744.57 561.08 640.45 672 512 672S279.43 561.08 279.43 424.26l0.84-111.69S320 96 512 96s231.73 216.57 231.73 216.57z" fill="#FFCEBF" ></path><path d="M512 680c-64.35 0-124.83-26.67-170.29-75.09s-70.28-112.43-70.28-180.65l0.85-112.45 0.12-0.68c0.42-2.27 10.61-56.28 45-111.09 20.31-32.41 44.88-58.28 73-76.88C425.69 99.83 466.61 88 512 88s86.31 11.83 121.62 35.16c28.14 18.6 52.71 44.47 73 76.88 34.35 54.81 44.54 108.82 45 111.09l0.12 0.68 0.85 112.39c0 68.28-25 132.43-70.28 180.71S576.35 680 512 680zM288.27 313.38l-0.84 110.94C287.43 556.45 388.17 664 512 664s224.57-107.55 224.57-239.74l-0.84-110.88c-1.25-6.21-12-56.13-42.9-105.26C649.37 139 588.53 104 512 104s-137.37 35-180.83 104.12c-30.9 49.13-41.65 99.05-42.9 105.26z" fill="#222222" ></path><path d="M300.57 469.95a37 21.14 0 1 0 74 0 37 21.14 0 1 0-74 0Z" fill="#FFA096" ></path><path d="M649.43 469.95a37 21.14 0 1 0 74 0 37 21.14 0 1 0-74 0Z" fill="#FFA096" ></path><path d="M681.14 378.57h-16.58a31.7 31.7 0 0 0-51.4 0h-16.59a8 8 0 0 0 0 16h10.69c-0.07 0.85-0.12 1.71-0.12 2.57a31.72 31.72 0 1 0 63.43 0c0-0.86 0-1.72-0.11-2.57h10.68a8 8 0 0 0 0-16zM427.43 378.57h-16.59a31.7 31.7 0 0 0-51.4 0h-16.58a8 8 0 0 0 0 16h10.68c-0.07 0.85-0.11 1.71-0.11 2.57a31.72 31.72 0 1 0 63.43 0c0-0.86-0.05-1.72-0.12-2.57h10.69a8 8 0 0 0 0-16z" fill="#222222" ></path><path d="M427.43 576.86s28.19 10.57 84.57 10.57 84.57-10.57 84.57-10.57" fill="#FFCEBF" ></path><path d="M512 595.43c-57.17 0-86.17-10.63-87.38-11.08a8 8 0 0 1 5.6-15c0.27 0.1 27.87 10.07 81.78 10.07 54.3 0 81.49-10 81.76-10.06a8 8 0 0 1 5.62 15c-1.21 0.44-30.21 11.07-87.38 11.07z" fill="#222222" ></path><path d="M448 816l-48-96 48-16 64 64-64 48z" fill="#00B9FF" ></path><path d="M448 824a8.24 8.24 0 0 1-1.84-0.21 8 8 0 0 1-5.32-4.21l-48-96a8 8 0 0 1 4.63-11.17l48-16a8 8 0 0 1 8.19 1.93l64 64a8 8 0 0 1-0.86 12.06l-64 48a8 8 0 0 1-4.8 1.6z m-36.72-99.33l39.59 79.18 48.95-36.72-54-54z" fill="#222222" ></path><path d="M576 816l48-96-48-16-64 64 64 48z" fill="#00B9FF" ></path><path d="M576 824a8 8 0 0 1-4.8-1.6l-64-48a8 8 0 0 1-0.86-12.06l64-64a8 8 0 0 1 8.19-1.93l48 16a8 8 0 0 1 4.63 11.17l-48 96a8 8 0 0 1-5.32 4.21 8.24 8.24 0 0 1-1.84 0.21z m-51.82-56.87l49 36.72 39.59-79.18-34.56-11.52z" fill="#222222" ></path><path d="M720 976H304V752l64-32v192h288V720l64 32v224z" fill="#FFA041" ></path><path d="M720 984H304a8 8 0 0 1-8-8V752a8 8 0 0 1 4.42-7.16l64-32A8 8 0 0 1 376 720v184h272V720a8 8 0 0 1 11.58-7.16l64 32A8 8 0 0 1 728 752v224a8 8 0 0 1-8 8z m-408-16h400V756.94l-48-24V912a8 8 0 0 1-8 8H368a8 8 0 0 1-8-8V732.94l-48 24z" fill="#222222" ></path><path d="M753.55 307.44c0-65.12-484.3-65.12-484.3 0 0-133.73 108.42-242.14 242.15-242.14s242.15 108.41 242.15 242.14z" fill="#FFC841" ></path><path d="M761.55 307.44h-16c0-7.55-18.09-19.61-69.08-28.75-43.47-7.8-102.09-12.09-165.07-12.09s-121.6 4.29-165.06 12.09c-51 9.14-69.09 21.2-69.09 28.75h-16a250.15 250.15 0 0 1 500.3 0zM511.4 73.3c-120.92 0-220.73 92.13-232.9 209.89 13.54-8.19 35.13-14.9 65-20.25 44.37-8 104-12.34 167.89-12.34s123.53 4.4 167.9 12.34c29.88 5.35 51.47 12.06 65 20.25C732.13 165.43 632.32 73.3 511.4 73.3z" fill="#222222" ></path><path d="M442.22 256V117.19C442.22 79 462.8 48 511.4 48s69.19 31 69.19 69.19V256c0 29.37-138.37 29.37-138.37 0z" fill="#FFB441" ></path><path d="M511.4 286c-12.89 0-77.18-1.45-77.18-30V117.18c0-22.05 6.36-40.82 18.41-54.26C466.07 47.93 486.39 40 511.4 40s45.33 7.93 58.78 22.92c12 13.44 18.41 32.21 18.41 54.26V256c0 28.58-64.3 30-77.19 30z m0-230c-55.22 0-61.18 42.79-61.18 61.18V256c0 1.13 2.9 5.17 15.79 8.83 11.69 3.3 28.23 5.2 45.39 5.2s33.7-1.9 45.39-5.2c12.89-3.66 15.8-7.7 15.8-8.83V117.18c0-18.39-5.97-61.18-61.19-61.18zM355.73 264a8 8 0 0 1-8-8V128a8 8 0 0 1 16 0v128a8 8 0 0 1-8 8zM665.84 264a8 8 0 0 1-8-8V128a8 8 0 0 1 16 0v128a8 8 0 0 1-8 8z" fill="#222222" ></path><path d="M273.84 352c46.36-23.26 135.63-39 238.16-39s191.8 15.75 238.16 39c21.55-10.82 33.84-23.26 33.84-36.49 0-41.7-121.78-75.51-272-75.51s-272 33.81-272 75.51c0 13.23 12.29 25.67 33.84 36.49z" fill="#FFC841" ></path><path d="M750.16 361l-3.59-1.8C699.66 335.61 609.78 321 512 321s-187.66 14.62-234.57 38.16l-3.59 1.8-3.58-1.8C244.87 346.41 232 331.73 232 315.51 232 261.27 376.26 232 512 232s280 29.27 280 83.51c0 16.22-12.87 30.9-38.26 43.64zM512 305c97.65 0 188.17 14.53 238 38.06 16.78-9 26-18.73 26-27.54 0-15.78-27.59-32.86-73.81-45.69C651.5 255.75 584 248 512 248s-139.5 7.75-190.19 21.82C275.59 282.65 248 299.73 248 315.51c0 8.81 9.18 18.51 26 27.54C323.83 319.52 414.35 305 512 305z" fill="#222222" ></path><path d="M912 560v48l-24.91 40h-46.18L816 608v-48a80 80 0 0 0 16 137.33V928h64V697.33A80 80 0 0 0 912 560z" fill="#646464" ></path><path d="M896 936h-64a8 8 0 0 1-8-8V702.39a88 88 0 0 1-12.81-148.79A8 8 0 0 1 824 560v45.71L845.35 640h37.3L904 605.71V560a8 8 0 0 1 12.81-6.4A88 88 0 0 1 904 702.39V928a8 8 0 0 1-8 8z m-56-16h48V697.33a8 8 0 0 1 4.8-7.33A72.07 72.07 0 0 0 920 578.69V608a8 8 0 0 1-1.21 4.23l-24.9 40a8 8 0 0 1-6.8 3.77h-46.18a8 8 0 0 1-6.79-3.77l-24.91-40A8 8 0 0 1 808 608v-29.31A72.07 72.07 0 0 0 835.2 690a8 8 0 0 1 4.8 7.33z m72-312z" fill="#222222" ></path><path d="M800 784h160v48H800z" fill="#FFCEBF" ></path><path d="M968 840H792v-64h176z m-160-16h144v-32H808z" fill="#222222" ></path><path d="M800 832h160v48H800z" fill="#FFCEBF" ></path><path d="M968 888H792v-64h176z m-160-16h144v-32H808z" fill="#222222" ></path><path d="M800 880h160v48H800z" fill="#FFCEBF" ></path><path d="M968 936H792v-64h176z m-160-16h144v-32H808z" fill="#222222" ></path><path d="M800 928h160v48H800z" fill="#FFCEBF" ></path><path d="M968 984H792v-64h176z m-160-16h144v-32H808z" fill="#222222" ></path><path d="M864 784h96v192h-96" fill="#FFCEBF" ></path><path d="M968 984H864v-16h88V792h-88v-16h104v208z" fill="#222222" ></path><path d="M800 784v96h-48v-96z" fill="#FFCEBF" ></path><path d="M808 888h-64V776h64z m-48-16h32v-80h-32zM512 920a8 8 0 0 1-8-8V784a8 8 0 0 1 16 0v128a8 8 0 0 1-8 8z" fill="#222222" ></path></symbol><symbol id="icon-lakers" viewBox="0 0 1024 1024"><path d="M841.728 423.936V141.312l-161.28-43.008h-0.512c-13.312 36.352-83.456 64.512-167.936 64.512s-154.624-27.648-167.936-64l-163.328 43.52v281.6a199.68 199.68 0 0 1-29.184 103.936v422.912h720.384v-420.864a201.6256 201.6256 0 0 1-30.208-105.984z" fill="#FC9A0D" ></path><path d="M510.464 184.32c100.352 0 181.76-33.28 181.76-74.24a28.9792 28.9792 0 0 0-1.536-9.216l-10.24-2.56h-0.512c-13.312 36.352-83.456 64.512-167.936 64.512s-154.624-27.648-167.936-64l-14.336 3.584a39.5264 39.5264 0 0 0-1.024 7.68c0 40.96 81.408 74.24 181.76 74.24zM782.336 459.776V125.952l60.928 16.384v281.6a199.68 199.68 0 0 0 29.184 103.936v99.328a201.472 201.472 0 0 1-90.112-167.424z" fill="#FFFFFF" ></path><path d="M872.704 627.6608l-0.4096-0.256a201.7792 201.7792 0 0 1-90.2144-167.6288V125.5936h0.3072l61.1328 16.4352v281.6a199.168 199.168 0 0 0 29.1328 103.7824z m-90.112-501.4016V459.776a201.2672 201.2672 0 0 0 89.6 166.9632v-98.816a199.68 199.68 0 0 1-29.184-103.9872v-281.6z" ></path><path d="M827.904 138.24v315.904c3.072 25.088 15.872 82.432 44.544 110.592v37.888c-61.44-32.768-74.24-140.8-74.752-145.92V129.536z" fill="#2A1A5B" ></path><path d="M241.664 459.776V125.952l-60.928 16.384v281.6a199.68 199.68 0 0 1-29.184 103.936v99.328a200.2432 200.2432 0 0 0 90.112-167.424z" fill="#FFFFFF" ></path><path d="M151.296 627.6608v-99.84a199.2192 199.2192 0 0 0 29.184-103.8848v-281.6l61.44-16.4864V459.776a200.8576 200.8576 0 0 1-90.2144 167.6288z m0.512-99.7376v98.7648a200.3456 200.3456 0 0 0 89.6-166.912V126.3104l-60.416 16.2304v281.6a199.68 199.68 0 0 1-29.184 103.7824z" ></path><path d="M196.608 138.24v315.904c-3.072 25.088-15.872 82.432-44.544 110.592v37.888c61.44-32.768 74.24-140.8 74.752-145.92V129.536z" fill="#2A1A5B" ></path><path d="M512 285.696a196.352 196.352 0 0 0 195.584-180.224l-27.136-7.168h-0.512c-4.096 11.776-14.336 22.528-28.672 31.744a145.0496 145.0496 0 0 1-278.528 0c-14.336-9.216-24.576-19.968-28.672-31.744l-27.648 7.168A197.0688 197.0688 0 0 0 512 285.696z" fill="#FFFFFF" ></path><path d="M512 285.952a195.328 195.328 0 0 1-133.12-52.3776 197.5296 197.5296 0 0 1-62.72-128l27.904-7.2192c3.9424 11.3152 13.568 21.9648 28.5696 31.5904a144.7936 144.7936 0 0 0 278.016 0c15.0016-9.6768 24.6272-20.48 28.5696-31.5904h0.768l27.3408 7.2192A196.608 196.608 0 0 1 512 285.952zM316.672 105.6768a195.9936 195.9936 0 0 0 390.6048 0l-26.88-7.1168h-0.3072c-3.9936 11.3664-13.6192 21.9648-28.6208 31.6416a145.6128 145.6128 0 0 1-51.2 74.9056 145.2544 145.2544 0 0 1-176.0768 0 146.3296 146.3296 0 0 1-51.6608-74.9056c-14.9504-9.6256-24.576-20.48-28.6208-31.5904z" fill="#333333" ></path><path d="M512 270.336a180.8384 180.8384 0 0 0 180.224-168.96l-11.776-3.072h-0.512a47.5648 47.5648 0 0 1-9.728 15.872 160 160 0 0 1-316.416 0 47.2576 47.2576 0 0 1-9.216-15.36l-12.288 3.584A179.8656 179.8656 0 0 0 512 270.336z" fill="#2A1A5B" ></path><path d="M152.064 902.144h719.872v49.152H152.064z" fill="#C17111" ></path><path d="M501.1456 775.8848v40.96h-132.096v-34.3552q58.7264-96 69.7856-118.8352t11.0592-35.84a25.6 25.6 0 0 0-3.328-14.6432 11.5712 11.5712 0 0 0-10.24-4.8128 11.2128 11.2128 0 0 0-10.24 5.12 44.9536 44.9536 0 0 0-3.328 21.248v22.8864H369.0496v-8.7552a190.8224 190.8224 0 0 1 2.0992-31.8976 55.9616 55.9616 0 0 1 10.24-22.9376 51.2 51.2 0 0 1 21.248-17.1008 76.8 76.8 0 0 1 31.3344-5.7856q35.84 0 54.1696 17.7664a59.904 59.904 0 0 1 18.3296 44.9536 106.9568 106.9568 0 0 1-10.24 43.6736q-10.24 23.04-60.8768 97.792zM640.8704 576.3072v157.2352h17.1008v40.96h-17.1008v42.3424h-60.0576v-42.3424H509.4912v-40.96l51.8656-157.2352z m-60.0576 157.2352v-102.4l-26.5216 102.4z" fill="#FFFFFF" ></path><path d="M306.3296 465.3056H322.56a27.5456 27.5456 0 0 0 4.5056-0.3072 10.9056 10.9056 0 0 0 3.072-0.9728 7.936 7.936 0 0 0 2.304-1.792 13.9264 13.9264 0 0 0 1.9456-3.0208 29.5424 29.5424 0 0 0 1.792-4.7104q0.8192-2.8672 2.0992-8.5504h6.2976l-1.024 25.088h-56.32v-3.072a12.9024 12.9024 0 0 0 5.12-2.2016 6.0416 6.0416 0 0 0 1.7408-3.4816 42.3936 42.3936 0 0 0 0.4096-6.8608V401.3568a45.312 45.312 0 0 0-0.3072-6.2976 7.8848 7.8848 0 0 0-1.024-3.072 5.12 5.12 0 0 0-1.8944-1.7408 20.7872 20.7872 0 0 0-4.0448-1.4848v-3.072h26.3168v3.072a22.2208 22.2208 0 0 0-3.8912 1.3312 5.4272 5.4272 0 0 0-1.8944 1.5872 7.3728 7.3728 0 0 0-1.1264 3.072 40.96 40.96 0 0 0-0.3584 6.5536zM402.688 471.04v-3.072a20.48 20.48 0 0 0 4.6592-1.3824 5.12 5.12 0 0 0 2.304-2.0992 7.3728 7.3728 0 0 0 0.768-3.584 23.552 23.552 0 0 0-0.512-4.608q-0.512-2.4576-1.4336-5.5296l-2.304-8.0384h-29.184l-2.1504 6.144A60.7744 60.7744 0 0 0 372.736 455.68a21.0432 21.0432 0 0 0-0.512 4.3008 7.1168 7.1168 0 0 0 1.9456 5.9392 10.8032 10.8032 0 0 0 5.8368 2.304V471.04H353.28v-3.072a9.472 9.472 0 0 0 6.0928-4.0448 41.6768 41.6768 0 0 0 5.12-10.24l26.0608-69.1712h9.8304l21.248 69.6832a67.1744 67.1744 0 0 0 2.6624 7.424 11.5712 11.5712 0 0 0 2.7648 3.9936 10.24 10.24 0 0 0 4.4544 2.1504V471.04zM378.88 437.2992h26.112l-11.8784-40.2944zM461.6704 424.2944h1.8944a12.1344 12.1344 0 0 0 4.352-0.768 16.0768 16.0768 0 0 0 4.4032-2.816 87.552 87.552 0 0 0 7.424-7.68q5.9904-6.7072 8.192-9.6768a25.6 25.6 0 0 0 3.584-5.9904 9.1136 9.1136 0 0 0 0.768-3.4816 4.4032 4.4032 0 0 0-1.4336-3.6352 7.3216 7.3216 0 0 0-3.9424-1.3824v-3.072h27.2384v3.072a14.1824 14.1824 0 0 0-3.9424 1.536 20.9408 20.9408 0 0 0-3.9936 3.0208q-2.048 1.8944-5.9904 6.2976l-20.992 23.6544 22.7328 33.0752a59.5968 59.5968 0 0 0 5.6832 7.3216 16.0768 16.0768 0 0 0 3.9424 3.072 12.6464 12.6464 0 0 0 3.9936 1.28V471.04h-27.392v-3.072a7.5776 7.5776 0 0 0 3.3792-0.8704 2.304 2.304 0 0 0 1.0752-2.048 6.912 6.912 0 0 0-0.7168-2.7136 25.6 25.6 0 0 0-2.304-3.84l-14.5408-21.7088a43.8272 43.8272 0 0 0-3.7376-5.12 7.936 7.936 0 0 0-2.56-1.8432 9.472 9.472 0 0 0-3.6864-0.6144h-3.328v26.1632a46.7456 46.7456 0 0 0 0.3072 6.144 8.6016 8.6016 0 0 0 0.9216 3.072 5.12 5.12 0 0 0 1.9456 1.8944 17.4592 17.4592 0 0 0 4.1472 1.4848v3.072h-26.368v-3.072a12.9024 12.9024 0 0 0 5.12-2.2016 6.0928 6.0928 0 0 0 1.7408-3.4816 42.3936 42.3936 0 0 0 0.4096-6.8608V401.3568a44.3392 44.3392 0 0 0-0.3072-6.2976 7.8848 7.8848 0 0 0-1.024-3.072 5.12 5.12 0 0 0-1.8944-1.7408 20.992 20.992 0 0 0-4.0448-1.4848v-3.072h26.3168v3.072a17.152 17.152 0 0 0-3.9936 1.3824 5.7344 5.7344 0 0 0-1.9456 1.7408 7.68 7.68 0 0 0-1.0752 3.072 42.3936 42.3936 0 0 0-0.3584 6.3488zM584.8576 385.7408V404.48H578.56a52.2752 52.2752 0 0 0-1.9456-5.12 23.7568 23.7568 0 0 0-2.048-3.8912 10.24 10.24 0 0 0-2.3552-2.5088 7.5776 7.5776 0 0 0-3.0208-1.28 22.3744 22.3744 0 0 0-4.1984-0.3584h-19.7632v32.768h13.3632a9.728 9.728 0 0 0 4.3008-0.768 6.144 6.144 0 0 0 2.6112-2.6624 24.7296 24.7296 0 0 0 1.9456-5.888H573.44v24.0128h-5.888a22.6816 22.6816 0 0 0-1.9456-5.632 6.7072 6.7072 0 0 0-2.4064-3.072 9.3696 9.3696 0 0 0-4.4032-0.8192h-13.3632v35.84h19.456a18.9952 18.9952 0 0 0 5.12-0.512 7.7824 7.7824 0 0 0 3.2768-1.792 12.032 12.032 0 0 0 2.4576-3.328 28.672 28.672 0 0 0 1.792-4.3008q0.7168-2.2016 1.9456-6.4512h6.1952l-1.3824 22.3232h-57.856v-3.072a12.9024 12.9024 0 0 0 5.12-2.2016 6.0416 6.0416 0 0 0 1.7408-3.4816 42.3936 42.3936 0 0 0 0.4096-6.8608V401.3568a45.312 45.312 0 0 0-0.3072-6.2976 7.8848 7.8848 0 0 0-1.024-3.072 5.12 5.12 0 0 0-1.8944-1.7408 20.7872 20.7872 0 0 0-4.0448-1.4848v-3.072zM618.2912 433.9712v21.248a43.52 43.52 0 0 0 0.3584 6.5536 7.9872 7.9872 0 0 0 1.024 3.072 5.12 5.12 0 0 0 1.8944 1.6896 21.4016 21.4016 0 0 0 4.0448 1.4848V471.04H599.04v-3.072a12.9024 12.9024 0 0 0 5.12-2.2016 6.0416 6.0416 0 0 0 1.7408-3.4816 42.3936 42.3936 0 0 0 0.4096-6.8608V401.3568a45.312 45.312 0 0 0-0.3072-6.2976 7.8848 7.8848 0 0 0-1.024-3.072 5.12 5.12 0 0 0-1.8944-1.7408 20.7872 20.7872 0 0 0-4.0448-1.4848v-3.072h30.72a36.9664 36.9664 0 0 1 21.8624 5.12 19.0976 19.0976 0 0 1 7.2704 16.4864 22.784 22.784 0 0 1-4.7104 14.5408 30.72 30.72 0 0 1-14.1312 9.3696v0.512a18.3296 18.3296 0 0 1 6.5536 4.4544 44.9024 44.9024 0 0 1 6.4 9.2672l5.632 10.24a61.44 61.44 0 0 0 4.1984 6.8608 15.36 15.36 0 0 0 3.584 3.6352 11.9296 11.9296 0 0 0 4.8128 1.7408V471.04h-17.3056a74.0352 74.0352 0 0 1-4.5056-7.1168q-2.1504-3.7888-4.1984-7.7312l-5.4784-10.24a65.6896 65.6896 0 0 0-4.096-7.0144 12.544 12.544 0 0 0-2.9184-3.1744 8.4992 8.4992 0 0 0-2.8672-1.2288 23.04 23.04 0 0 0-4.608-0.3584z m0-42.496v37.12h7.0656a40.0896 40.0896 0 0 0 8.8064-0.768 16.2816 16.2816 0 0 0 6.2464-2.9696 15.0528 15.0528 0 0 0 4.608-6.0928 23.808 23.808 0 0 0 1.7408-9.5744 21.4016 21.4016 0 0 0-2.048-9.8816 13.5168 13.5168 0 0 0-6.144-5.9904 25.1392 25.1392 0 0 0-11.1104-2.048q-5.6832-0.0512-9.1648 0.2048zM687.872 451.584a26.2656 26.2656 0 0 0 3.3792 8.704 12.9024 12.9024 0 0 0 5.4784 4.7104 21.1456 21.1456 0 0 0 8.704 1.536 15.36 15.36 0 0 0 11.2128-3.7888 14.848 14.848 0 0 0 3.8912-11.1104 17.2544 17.2544 0 0 0-1.6384-7.8848 17.9712 17.9712 0 0 0-5.12-5.9904 72.4992 72.4992 0 0 0-11.264-6.5536 61.8496 61.8496 0 0 1-11.5712-7.1168 23.9616 23.9616 0 0 1-6.3488-7.5264 19.0976 19.0976 0 0 1-2.0992-8.8576 22.1696 22.1696 0 0 1 3.2768-12.1344 21.248 21.248 0 0 1 9.6256-7.9872 35.5328 35.5328 0 0 1 14.5408-2.816 73.5232 73.5232 0 0 1 20.48 2.7648V404.48h-6.1952a26.2656 26.2656 0 0 0-3.6352-8.5504 11.9808 11.9808 0 0 0-5.12-4.3008 20.0704 20.0704 0 0 0-7.6288-1.2288 17.0496 17.0496 0 0 0-7.2704 1.4848 11.6736 11.6736 0 0 0-5.12 4.5056 13.4656 13.4656 0 0 0-1.8944 7.2192 16.0768 16.0768 0 0 0 1.5872 7.4752 17.664 17.664 0 0 0 5.12 5.6832 59.5456 59.5456 0 0 0 10.24 5.888 76.3392 76.3392 0 0 1 12.0832 7.424 26.1632 26.1632 0 0 1 6.8608 7.8336 20.48 20.48 0 0 1 2.4576 10.24 26.7264 26.7264 0 0 1-2.048 11.1104 19.2512 19.2512 0 0 1-5.7344 7.3728 23.296 23.296 0 0 1-8.7552 4.1472 46.08 46.08 0 0 1-11.1616 1.28 92.16 92.16 0 0 1-22.6304-3.328V451.584z" fill="#2A1A5B" ></path><path d="M872.448 950.528v-420.864a201.6256 201.6256 0 0 1-30.208-105.984v-282.624l-161.28-43.008h-0.512c-13.312 36.352-83.456 64.512-167.936 64.512h-6.144v787.968z" opacity=".15" ></path></symbol><symbol id="icon-like02" viewBox="0 0 1024 1024"><path d="M604.2 184.56666667c16.2 8.4 30.4 22.7 42.8 41.5 20.1 31.1 32.4 75.8 35 126.3 1.9 40.8-2.6 82.9-13 119.8h154.2c36.3 0 67.4 9.1 90.7 25.9 24 17.5 37.6 42.8 38.2 70.6v0.6c0 21.4-8.4 47.3-20.7 64.1 13.6 15.5 20.7 36.3 20.7 61.5 0 29.8-20.7 57.7-41.5 72.5 5.2 11.7 7.1 25.3 7.1 34.3 0 33.7-20.1 60.2-55.1 74.5 3.2 7.8 4.5 16.2 4.5 26.6 0 31.7-13 57.7-37.6 74.5-24 16.8-58.3 25.3-101.7 25.3h-246c-27.2 0-57.7-5.8-80.3-14.9-9.1-3.9-17.5-7.8-23.3-11-1.3-0.6-3.2-1.3-4.5-1.9-1.3 0.6-1.9 1.9-3.2 2.6-1.9 1.3-3.9 3.2-5.8 4.5-14.3 10.4-29.8 20.1-48.6 20.7h-66.7c-28.5 0-51.8-9.1-68-26.6-14.9-16.2-24-39.5-25.9-68.7l-30.4-324.5v-1.3c0-30.4 9.1-57.6 25.9-77.7 17.5-20.7 42.1-31.7 69.3-31.7H338c16.2 0 42.8-5.2 77.1-30.4 24-18.1 38.9-36.3 42.1-42.1 11-26.6 21.4-55.7 21.4-125 0-8.4 0-34.3 11-57 9.1-20.1 29.8-43.4 72.6-43.4 14.8 0 28.4 3.9 42 10.4z" fill="#FF9D00" ></path><path d="M616.7 122.86666667a12.2 2.3 90 1 0 4.6 0 12.2 2.3 90 1 0-4.6 0Z" fill="#F07FFD" ></path><path d="M627.571704 121.32267867a12.2 2.3 60 1 0 3.983717-2.3 12.2 2.3 60 1 0-3.983717 2.3Z" fill="#F07FFD" ></path><path d="M636.311797 114.58635567a12.2 2.3 30 1 0 2.3-3.983717 12.2 2.3 30 1 0-2.3 3.983717Z" fill="#F07FFD" ></path><path d="M628.3 102.06666667a12.2 2.3 0 1 0 24.4 0 12.2 2.3 0 1 0-24.4 0Z" fill="#F07FFD" ></path><path d="M627.328131 97.54693467a2.3 12.2 60 1 0 21.13102-12.2 2.3 12.2 60 1 0-21.13102 12.2Z" fill="#F07FFD" ></path><path d="M624.189866 94.11262367a2.3 12.2 30 1 0 12.2-21.131019 2.3 12.2 30 1 0-12.2 21.131019Z" fill="#F07FFD" ></path><path d="M617.4 80.56666667a12.2 2.3 90 1 0 4.6 0 12.2 2.3 90 1 0-4.6 0Z" fill="#F07FFD" ></path><path d="M607.088802 84.31648967a12.2 2.3 60 1 0 3.983717-2.3 12.2 2.3 60 1 0-3.983717 2.3Z" fill="#F07FFD" ></path><path d="M600.042483 92.79750567a12.2 2.3 30 1 0 2.3-3.983717 12.2 2.3 30 1 0-2.3 3.983717Z" fill="#F07FFD" ></path><path d="M586 101.26666667a12.2 2.3 0 1 0 24.4 0 12.2 2.3 0 1 0-24.4 0Z" fill="#F07FFD" ></path><path d="M590.235205 118.07933667a2.3 12.2 60 1 0 21.13102-12.2 2.3 12.2 60 1 0-21.13102 12.2Z" fill="#F07FFD" ></path><path d="M602.351017 130.46853967a2.3 12.2 30 1 0 12.2-21.131019 2.3 12.2 30 1 0-12.2 21.131019Z" fill="#F07FFD" ></path><path d="M367.4 166.26666667m-14.8 0a14.8 14.8 0 1 0 29.6 0 14.8 14.8 0 1 0-29.6 0Z" fill="#2C65AF" ></path><path d="M737.5 143.46666667c2.3 0 4.2 1.9 4.2 4.2v45.5c0 2.3-1.9 4.2-4.2 4.2s-4.2-1.9-4.2-4.2V147.66666667c0-2.4 1.9-4.2 4.2-4.2z" fill="#EF8218" ></path><path d="M714.7 166.16666667h45.5c2.3 0 4.2 1.9 4.2 4.2 0 2.3-1.9 4.2-4.2 4.2h-45.5c-2.3 0-4.2-1.9-4.2-4.2 0.1-2.4 1.9-4.2 4.2-4.2z" fill="#EF8218" ></path><path d="M270.2 201.26666667c5.9-3 8.8-9 6.6-13.3l-43.4-84.1c-2.2-4.3-8.8-5.3-14.7-2.3-5.9 3-8.8 9-6.6 13.3l43.4 84.1c2.2 4.3 8.8 5.3 14.7 2.3z" fill="#7CCBE2" ></path><path d="M294.3 125.66666667c-3-5.9-9-8.8-13.3-6.6l-84.1 43.4c-4.3 2.2-5.3 8.8-2.3 14.7s9 8.8 13.3 6.6l84.1-43.4c4.3-2.2 5.3-8.8 2.3-14.7z" fill="#7CCBE2" ></path><path d="M442.8-13.13333333c20.8 0 37.7 16.8 37.7 37.4S463.6 61.66666667 442.8 61.66666667c-20.8 0-37.7-16.8-37.7-37.4S422-13.13333333 442.8-13.13333333z m0 64.8c15.3 0 27.8-12.3 27.8-27.5S458.1-3.33333333 442.8-3.33333333 415 8.96666667 415 24.16666667 427.5 51.66666667 442.8 51.66666667z" fill="#E62A52" ></path><path d="M674 984.76666667h-81.3c-8.3 0-15-6.7-15-15s6.7-15 15-15H674c40.5 0 71.8-7.6 93.1-22.5l0.2-0.1c20.3-13.9 31-35.4 31-62.1 0-8.8-1-15.2-3.4-20.8l-5.8-14 14-5.7c29.5-12 45.7-33.5 45.7-60.6 0-7-1.5-18.6-5.8-28.2l-5-11.2 9.9-7.1c17.5-12.6 35.2-36.1 35.2-60.4 0-21.4-5.7-38.8-17-51.7l-7.9-9 7.1-9.7c10.5-14.4 17.8-37.1 17.8-55.3v-0.5c-0.6-23.2-12-44-32.1-58.7-20.8-15.1-49.2-23-81.8-23h-174l5.3-19.1c9.9-35.1 14.3-76 12.4-115.1-2.5-47.9-14-90.1-32.6-118.9-11.1-17-23.5-29.2-36.8-36.2-12.7-6-23.9-8.8-35.4-8.8-35.8 0-51.8 18.8-58.9 34.6l-0.2 0.4c-9.5 19.6-9.5 42.8-9.5 50.5 0 70.6-10.7 102.1-22.5 130.8l-0.3 0.8-0.4 0.7c-4.4 7.9-20.8 27.6-46.2 46.8l-0.2 0.1c-37.5 27.6-67.4 33.4-86 33.4H166.2c-22.9 0-43.5 9.4-57.8 26.4C93.8 497.96666667 86 521.56666667 86 548.66666667v0.6l3.5 37.7c0.8 8.2-5.3 15.6-13.5 16.3-8.2 0.8-15.6-5.3-16.3-13.5L56 550.66666667v-2c0-34.2 10.2-64.4 29.4-87.4 20.2-23.9 48.9-37.1 80.8-37.1h117.9c14 0 37.2-4.8 68.1-27.5 21.4-16.2 34.6-32.1 37.6-36.8 10.9-26.4 19.8-53.9 19.8-118.3 0-9.3 0-37.6 12.4-63.4 6.5-14.2 16.3-26.3 28.5-35.1 15.7-11.3 35.1-17 57.6-17 16 0 31.8 3.9 48.6 11.8l0.5 0.2c18 9.4 34.3 25 48.4 46.5 21.4 33.5 34.7 81 37.4 134.1 1.7 35.4-1.4 72.2-8.7 105.6h135c39 0 73.4 9.9 99.5 28.8 27.9 20.4 43.7 49.6 44.4 82.4v1c0 20.6-6.8 44.7-17.4 63.4 11.6 17.1 17.4 38 17.4 62.3 0 32.2-19.3 60.3-38.7 77.5 4 13.5 4.4 25.4 4.4 29.4 0 35.3-18.8 64.9-52.1 82.6 1.1 5.6 1.6 11.7 1.6 18.4 0 36.5-15.6 67.4-44 86.8-26.6 18.5-63.7 27.9-110.4 27.9z" fill="" ></path><path d="M91.7 786.76666667c-7.7 0-14.2-5.8-14.9-13.6l-12-128.4c-0.8-8.2 5.3-15.6 13.5-16.3 8.3-0.8 15.6 5.3 16.3 13.5l12 128.4c0.8 8.2-5.3 15.6-13.5 16.3-0.4 0.1-0.9 0.1-1.4 0.1z" fill="" ></path><path d="M502.1 984.76666667h-74.2c-28.8 0-60.9-6-85.9-16l-0.3-0.1c-8-3.4-14.7-6.5-19.9-9.2-0.7 0.6-1.6 1.2-2.5 1.8-16.2 11.7-34.2 22.7-56.7 23.4h-67.2c-32.7 0-60-10.8-79-31.4-17.4-18.9-27.7-45.7-29.9-77.7L82.7 835.66666667c-0.8-8.2 5.3-15.6 13.5-16.3 8.2-0.8 15.6 5.3 16.3 13.5l3.8 40.7c1.7 25.1 9.3 45.7 22 59.5 13.3 14.4 32.5 21.7 57 21.7h66.4c13.6-0.5 25.8-7.5 40-17.9l0.5-0.4c0.3-0.2 1.1-0.8 1.6-1.3 1.1-0.9 2.4-2 3.9-3 1-1 2.7-2.5 5.1-3.7l6.7-3.4 6.7 3.4c0.3 0.1 0.7 0.3 1.1 0.5 1 0.4 2.2 0.9 3.4 1.5l0.6 0.3c4.8 2.7 12.3 6.2 21.8 10.3 21.3 8.5 49.9 13.8 74.6 13.8h74.2c8.3 0 15 6.7 15 15s-6.5 14.9-14.8 14.9z" fill="" ></path><path d="M320.7 948.66666667c-7.9 0-14.5-6.2-15-14.2l-26.5-495c-0.4-8.3 5.9-15.3 14.2-15.8 8.3-0.4 15.3 5.9 15.8 14.2l26.5 495c0.4 8.3-5.9 15.3-14.2 15.8h-0.8z" fill="" ></path><path d="M188.4 607.36666667c-7.9 0-14.5-6.2-15-14.2l-2.8-49.5c-0.5-8.3 5.9-15.3 14.1-15.8 8.3-0.5 15.3 5.9 15.8 14.1l2.8 49.5c0.5 8.3-5.9 15.3-14.1 15.8-0.3 0.1-0.5 0.1-0.8 0.1zM200.2 820.96666667c-7.9 0-14.5-6.2-15-14.2l-8.1-145.7c-0.5-8.3 5.9-15.3 14.1-15.8 8.3-0.5 15.3 5.9 15.8 14.1l8.1 145.7c0.5 8.3-5.9 15.3-14.1 15.8-0.2 0-0.5 0.1-0.8 0.1z" fill="#FFFFFF" ></path></symbol><symbol id="icon-date02" viewBox="0 0 1024 1024"><path d="M698.368 0m60.643556 0l0.113777 0q60.643556 0 60.643556 60.643556l0 64.512q0 60.643556-60.643556 60.643555l-0.113777 0q-60.643556 0-60.643556-60.643555l0-64.512q0-60.643556 60.643556-60.643556Z" fill="#3A77D9" ></path><path d="M204.344889 0m60.643555 0l0.113778 0q60.643556 0 60.643556 60.643556l0 64.512q0 60.643556-60.643556 60.643555l-0.113778 0q-60.643556 0-60.643555-60.643555l0-64.512q0-60.643556 60.643555-60.643556Z" fill="#3A77D9" ></path><path d="M885.76 56.888889h-35.726222v84.423111a91.022222 91.022222 0 0 1-91.022222 91.022222 91.022222 91.022222 0 0 1-91.022223-91.022222V56.888889H356.010667v84.423111a91.022222 91.022222 0 0 1-182.044445 0V56.888889H138.24A136.533333 136.533333 0 0 0 1.706667 193.422222v694.044445a136.533333 136.533333 0 0 0 136.533333 136.533333h747.52a136.533333 136.533333 0 0 0 136.533333-136.533333V193.422222a136.533333 136.533333 0 0 0-136.533333-136.533333z m98.986667 838.200889a86.471111 86.471111 0 0 1-86.243556 86.243555h-773.688889a86.471111 86.471111 0 0 1-85.560889-86.243555V380.131556a86.471111 86.471111 0 0 1 86.243556-86.243556h773.688889a86.471111 86.471111 0 0 1 86.243555 86.243556z" fill="#3A77D9" ></path><path d="M161.905778 392.305778h115.256889v115.256889H161.905778zM454.428444 392.305778h115.256889v115.256889H454.428444zM746.837333 392.305778h115.256889v115.256889H746.837333zM161.905778 576.512h115.256889V691.768889H161.905778zM454.428444 576.512h115.256889V691.768889H454.428444zM746.837333 576.512h115.256889V691.768889H746.837333zM161.905778 760.718222h115.256889v115.256889H161.905778zM454.428444 760.718222h115.256889v115.256889H454.428444zM746.837333 760.718222h115.256889v115.256889H746.837333z" fill="#3A77D9" ></path></symbol><symbol id="icon-reply02" viewBox="0 0 1024 1024"><path d="M170.666667 136.533333m136.533333 0l512 0q136.533333 0 136.533333 136.533334l0 307.2q0 136.533333-136.533333 136.533333l-512 0q-136.533333 0-136.533333-136.533333l0-307.2q0-136.533333 136.533333-136.533334Z" fill="#FC7300" ></path><path d="M170.666667 170.666667m136.533333 0l512 0q136.533333 0 136.533333 136.533333l0 307.2q0 136.533333-136.533333 136.533333l-512 0q-136.533333 0-136.533333-136.533333l0-307.2q0-136.533333 136.533333-136.533333Z" fill="#FA8511" ></path><path d="M170.666667 273.066667h512a136.533333 136.533333 0 0 1 136.533333 136.533333v307.2a136.533333 136.533333 0 0 1-136.533333 136.533333h-188.757334l-67.242666 67.4816L359.1168 853.333333H170.666667a136.533333 136.533333 0 0 1-136.533334-136.533333v-307.2a136.533333 136.533333 0 0 1 136.533334-136.533333z" fill="#FBC476" ></path><path d="M170.666667 307.2h512a136.533333 136.533333 0 0 1 136.533333 136.533333v307.2a136.533333 136.533333 0 0 1-136.533333 136.533334h-188.757334l-67.242666 67.4816L359.1168 887.466667H170.666667a136.533333 136.533333 0 0 1-136.533334-136.533334v-307.2a136.533333 136.533333 0 0 1 136.533334-136.533333z" fill="#FAB85F" ></path><path d="M204.8 477.866667m34.133333 0l375.466667 0q34.133333 0 34.133333 34.133333l0 0q0 34.133333-34.133333 34.133333l-375.466667 0q-34.133333 0-34.133333-34.133333l0 0q0-34.133333 34.133333-34.133333Z" fill="#FFFFFF" ></path><path d="M204.8 648.533333m34.133333 0l273.066667 0q34.133333 0 34.133333 34.133334l0 0q0 34.133333-34.133333 34.133333l-273.066667 0q-34.133333 0-34.133333-34.133333l0 0q0-34.133333 34.133333-34.133334Z" fill="#FFFFFF" ></path></symbol><symbol id="icon-browse02" viewBox="0 0 1024 1024"><path d="M414.5 75.1h196.1C579 68 546.2 64.3 512.5 64.3c-33.7 0.1-66.5 3.8-98 10.8z" fill="#00D995" ></path><path d="M363.4 89.8l298.3 0.1c-16.6-5.9-33.6-10.8-51.1-14.7H414.5c-17.4 3.8-34.5 8.7-51.1 14.6z" fill="#01D996" ></path><path d="M327.1 104.4l370.9 0.1c-11.8-5.4-24-10.3-36.3-14.7l-298.3-0.1c-12.3 4.4-24.5 9.3-36.3 14.7z" fill="#01D997" ></path><path d="M297.8 119.1l429.4 0.1c-9.5-5.2-19.3-10.1-29.3-14.7l-370.9-0.1c-9.9 4.6-19.6 9.4-29.2 14.7z" fill="#01D898" ></path><path d="M273 133.7l479.1 0.1c-8.1-5.1-16.4-10-24.8-14.7l-429.4-0.1c-8.5 4.7-16.8 9.6-24.9 14.7z" fill="#01D899" ></path><path d="M251.3 148.4l522.5 0.1c-7.1-5.1-14.3-10-21.7-14.7l-479.1-0.1c-7.4 4.7-14.6 9.6-21.7 14.7z" fill="#01D89A" ></path><path d="M232 163l561 0.1c-6.3-5.1-12.7-9.9-19.3-14.7l-522.5-0.1c-6.4 4.8-12.9 9.7-19.2 14.7z" fill="#01D79B" ></path><path d="M214.7 177.7l595.6 0.1c-5.6-5-11.4-9.9-17.3-14.7l-561-0.1c-5.8 4.8-11.6 9.6-17.3 14.7z" fill="#01D79C" ></path><path d="M199.1 192.3l627 0.1c-5.1-5-10.3-9.9-15.7-14.7l-595.6-0.1c-5.4 4.8-10.6 9.7-15.7 14.7z" fill="#02D79D" ></path><path d="M184.8 207l655.5 0.1c-4.7-5-9.4-9.9-14.3-14.7l-627-0.1c-4.8 4.8-9.6 9.7-14.2 14.7z" fill="#02D79E" ></path><path d="M171.7 221.6l681.6 0.1c-4.2-5-8.6-9.9-13-14.7H184.8c-4.5 4.8-8.8 9.6-13.1 14.6z" fill="#02D69F" ></path><path d="M159.7 236.3l705.6 0.1c-3.9-5-7.9-9.9-12-14.7l-681.6-0.1c-4.1 4.8-8.1 9.7-12 14.7z" fill="#02D6A0" ></path><path d="M148.7 250.9l727.6 0.1c-3.6-5-7.2-9.9-11-14.7l-705.6-0.1c-3.7 4.9-7.4 9.8-11 14.7z" fill="#02D6A1" ></path><path d="M138.6 265.6l747.8 0.1c-3.3-5-6.7-9.8-10.1-14.7l-727.6-0.1c-3.4 4.8-6.8 9.7-10.1 14.7z" fill="#02D5A2" ></path><path d="M129.3 280.2l766.4 0.2c-3-5-6.1-9.8-9.3-14.7l-747.8-0.1c-3.2 4.8-6.3 9.7-9.3 14.6z" fill="#02D5A3" ></path><path d="M120.8 294.9l783.4 0.2c-2.8-4.9-5.6-9.8-8.5-14.7l-766.4-0.2c-2.9 4.9-5.7 9.7-8.5 14.7z" fill="#02D5A4" ></path><path d="M113 309.5l799 0.2c-2.5-4.9-5.1-9.8-7.8-14.7l-783.4-0.2c-2.7 4.9-5.3 9.8-7.8 14.7z" fill="#03D4A5" ></path><path d="M105.9 324.2l813.2 0.2c-2.3-4.9-4.7-9.8-7.1-14.7l-799-0.2c-2.4 4.9-4.8 9.8-7.1 14.7z" fill="#03D4A6" ></path><path d="M99.4 338.8l826.2 0.2c-2.1-4.9-4.2-9.8-6.5-14.7l-813.2-0.2c-2.2 4.9-4.4 9.8-6.5 14.7z" fill="#03D4A7" ></path><path d="M93.6 353.5l837.9 0.2c-1.9-4.9-3.8-9.8-5.8-14.7l-826.2-0.2c-2.1 4.9-4.1 9.8-5.9 14.7z" fill="#03D4A8" ></path><path d="M88.3 368.2l848.4 0.2c-1.7-4.9-3.4-9.8-5.3-14.7l-837.9-0.2c-1.8 4.8-3.5 9.7-5.2 14.7z" fill="#03D3A9" ></path><path d="M83.6 382.8l857.8 0.2c-1.5-4.9-3-9.8-4.7-14.7l-848.4-0.2c-1.6 4.9-3.2 9.8-4.7 14.7z" fill="#03D3AA" ></path><path d="M79.5 397.5l866 0.2c-1.3-4.9-2.7-9.8-4.1-14.7l-857.8-0.2c-1.4 4.9-2.8 9.7-4.1 14.7z" fill="#03D3AB" ></path><path d="M75.9 412.1l873.2 0.2c-1.1-4.9-2.3-9.8-3.6-14.7l-866-0.2c-1.3 4.9-2.5 9.8-3.6 14.7z" fill="#04D2AC" ></path><path d="M72.8 426.8l879.4 0.2c-1-4.9-2-9.8-3.1-14.7l-873.2-0.2c-1.1 4.9-2.2 9.8-3.1 14.7z" fill="#04D2AD" ></path><path d="M70.2 441.4l884.6 0.2c-0.8-4.9-1.6-9.8-2.6-14.7l-879.4-0.2c-1 4.9-1.8 9.8-2.6 14.7z" fill="#04D2AE" ></path><path d="M68.1 456.1l888.7 0.2c-0.6-4.9-1.3-9.8-2.1-14.7l-884.6-0.2c-0.7 4.9-1.4 9.8-2 14.7z" fill="#04D1AF" ></path><path d="M66.5 470.7l891.9 0.2c-0.5-4.9-1-9.8-1.6-14.7L68.1 456c-0.6 4.9-1.1 9.8-1.6 14.7z" fill="#04D1B0" ></path><path d="M65.4 485.4l894.1 0.2c-0.3-4.9-0.7-9.8-1.1-14.6l-891.9-0.3c-0.4 4.9-0.8 9.8-1.1 14.7z" fill="#04D1B1" ></path><path d="M64.8 500l895.3 0.2c-0.1-4.9-0.3-9.8-0.6-14.6l-894.1-0.2c-0.3 4.9-0.5 9.7-0.6 14.6z" fill="#04D1B2" ></path><path d="M64.8 500c-0.1 4-0.2 8.1-0.2 12.2v2.5l895.6 0.2v-2.7c0-4-0.1-8-0.2-12" fill="#05D0B3" ></path><path d="M65 529.4l895 0.2c0.2-4.9 0.3-9.8 0.3-14.7l-895.6-0.2c0 4.9 0.1 9.8 0.3 14.7z" fill="#05D0B4" ></path><path d="M65.8 544l893.4 0.2c0.3-4.9 0.6-9.8 0.8-14.7l-895-0.2c0.1 5 0.4 9.8 0.8 14.7z" fill="#05D0B5" ></path><path d="M67 558.7l890.9 0.2c0.5-4.9 0.9-9.8 1.3-14.7L65.8 544c0.3 4.9 0.7 9.8 1.2 14.7z" fill="#05CFB6" ></path><path d="M68.8 573.3l887.4 0.2c0.7-4.9 1.2-9.8 1.8-14.7l-890.9-0.2c0.4 5 1 9.9 1.7 14.7z" fill="#05CFB7" ></path><path d="M71 588l882.9 0.2c0.8-4.9 1.6-9.7 2.3-14.7l-887.4-0.2c0.6 4.9 1.4 9.8 2.2 14.7z" fill="#05CFB8" ></path><path d="M73.8 602.6l877.4 0.2c1-4.9 1.9-9.7 2.8-14.7L71 588c0.9 4.9 1.8 9.8 2.8 14.6z" fill="#05CEB9" ></path><path d="M77 617.3l870.8 0.2c1.2-4.8 2.3-9.7 3.3-14.7l-877.4-0.2 3.3 14.7z" fill="#06CEBA" ></path><path d="M80.8 631.9l863.2 0.2c1.3-4.8 2.6-9.7 3.8-14.7L77 617.2c1.2 5 2.5 9.9 3.8 14.7z" fill="#06CEBB" ></path><path d="M85.1 646.6l854.6 0.2c1.5-4.8 3-9.7 4.3-14.7l-863.2-0.2c1.4 5 2.8 9.8 4.3 14.7z" fill="#06CEBD" ></path><path d="M90 661.2l844.8 0.2c1.7-4.8 3.3-9.7 4.9-14.7l-854.6-0.2c1.6 5 3.2 9.9 4.9 14.7z" fill="#06CDBE" ></path><path d="M95.5 675.9l833.9 0.2c1.9-4.8 3.7-9.7 5.5-14.7l-844.8-0.2c1.7 5 3.5 9.9 5.4 14.7z" fill="#06CDBF" ></path><path d="M101.6 690.6l821.8 0.2c2.1-4.8 4.1-9.7 6.1-14.7l-834-0.2c1.9 4.9 4 9.8 6.1 14.7z" fill="#06CDC0" ></path><path d="M108.2 705.2l808.4 0.2c2.3-4.8 4.5-9.7 6.7-14.7l-821.8-0.2c2.2 5 4.4 9.9 6.7 14.7z" fill="#06CCC1" ></path><path d="M115.6 719.9l793.7 0.2c2.5-4.8 5-9.7 7.3-14.7l-808.4-0.2c2.4 5 4.9 9.8 7.4 14.7z" fill="#07CCC2" ></path><path d="M123.6 734.5l777.6 0.2c2.8-4.8 5.5-9.7 8-14.7l-793.7-0.2c2.7 5 5.4 9.9 8.1 14.7z" fill="#07CCC3" ></path><path d="M132.4 749.2l760.1 0.2c3-4.8 5.9-9.7 8.8-14.7l-777.6-0.2c2.8 5 5.7 9.9 8.7 14.7z" fill="#07CBC4" ></path><path d="M142 763.8l740.9 0.2c3.3-4.8 6.5-9.7 9.6-14.7l-760.1-0.2c3.1 5 6.3 9.9 9.6 14.7z" fill="#07CBC5" ></path><path d="M152.4 778.5l720.1 0.2c3.6-4.8 7-9.7 10.4-14.7l-740.9-0.2c3.3 5 6.8 9.9 10.4 14.7z" fill="#07CBC6" ></path><path d="M163.7 793.2l697.4 0.1c3.9-4.8 7.7-9.7 11.3-14.7l-720.1-0.2c3.7 5.1 7.5 10 11.4 14.8z" fill="#07CBC7" ></path><path d="M176 807.8l672.7 0.1c4.2-4.8 8.3-9.7 12.4-14.7l-697.4-0.1c4 5 8.1 9.9 12.3 14.7z" fill="#07CAC8" ></path><path d="M189.5 822.5l645.8 0.1c4.6-4.8 9.1-9.7 13.5-14.7l-672.7-0.1c4.3 5 8.8 9.9 13.4 14.7z" fill="#08CAC9" ></path><path d="M204.3 837.1l616.3 0.1c5-4.8 10-9.7 14.8-14.7H189.5c4.8 5 9.7 9.9 14.8 14.6z" fill="#08CACA" ></path><path d="M220.5 851.8l583.8 0.1c5.5-4.8 10.9-9.6 16.2-14.7l-616.3-0.1c5.3 5 10.8 9.9 16.3 14.7z" fill="#08C9CB" ></path><path d="M238.4 866.4l547.9 0.1c6.1-4.7 12.1-9.6 18-14.7H220.5c5.8 5 11.8 9.9 17.9 14.6z" fill="#08C9CC" ></path><path d="M248.8 874.2l527.2 0.1c3.5-2.5 7-5.2 10.4-7.8l-547.9-0.1c3.3 2.7 6.8 5.3 10.3 7.8zM512.5 960.1c98.5 0 189.6-31.8 263.5-85.7l-527.2-0.1c74 53.9 165.1 85.8 263.7 85.8z" fill="#08C9CC" ></path><path d="M790.3 504.5C756.1 415.8 620.8 332 511.8 332c-115.8 0-238 75.6-278.3 172.1l-2.9 6.9 2.9 6.9C273.8 614.4 396 690 511.8 690c109 0 244.3-83.9 278.5-172.5l2.5-6.4-2.5-6.6zM511.8 622.1c-61.3 0-111.2-49.9-111.2-111.2 0-61.3 49.9-111.2 111.2-111.2S623 449.6 623 510.9c0 61.3-49.9 111.2-111.2 111.2z" fill="#FFFFFF" ></path><path d="M511.7 427.6c-45.9 0-83.2 37.4-83.2 83.3s37.3 83.3 83.2 83.3c45.9 0 83.3-37.3 83.3-83.3 0-45.9-37.4-83.3-83.3-83.3z m53.4 83.3c-6.6 0-11.9-5.3-11.9-11.9 0-13-10.6-23.7-23.7-23.7-6.6 0-11.9-5.3-11.9-11.9 0-6.6 5.3-11.9 11.9-11.9 26.2 0 47.5 21.3 47.5 47.5 0 6.5-5.3 11.9-11.9 11.9z" fill="#FFFFFF" ></path><path d="M517.6 502.7v-51.3h52.3c-15-14.7-35.6-23.8-58.2-23.8-14.9 0-28.8 3.9-40.9 10.8l46.8 64.3zM577 498.9v11.9h-53.5l44.6 61.2c16.5-15.2 26.9-37 26.9-61.2 0-19.4-6.7-37.3-17.9-51.5v39.6z" fill="#FFFFFF" ></path><path d="M577 498.9v-39.6c-2.2-2.8-4.6-5.5-7.1-7.9h-40.4c26.2 0 47.5 21.3 47.5 47.5zM565.1 510.9H577V499c0 6.5-5.3 11.9-11.9 11.9z" fill="#FFFFFF" ></path><path d="M553.2 498.9c0-13-10.6-23.7-23.7-23.7-6.6 0-11.9-5.3-11.9-11.9v39.4l4.1 5.6 1.9 2.5h41.6c-6.7 0.1-12-5.3-12-11.9zM529.5 451.4h-11.9v11.9c0-6.5 5.3-11.9 11.9-11.9zM517.6 502.7l4.1 5.6zM517.6 504.3v-1.6l-46.8-64.3c-0.3 0.2-0.6 0.3-0.8 0.5l47.6 65.4zM523.5 510.9h-1.2l45.1 61.9c0.2-0.2 0.5-0.4 0.7-0.7l-44.6-61.2zM523.5 510.9l-1.8-2.6z" fill="#FFFFFF" ></path><path d="M517.6 502.7v1.6l4.8 6.6h1.1l-1.8-2.6zM517.6 504.3l4.8 6.6-4.8-6.6z" fill="#FFFFFF" ></path><path d="M521.2 510.9l45.5 62.5c0.2-0.2 0.5-0.4 0.7-0.6l-45.1-61.9h-1.1zM517.6 504.3L470 438.9c-0.3 0.2-0.6 0.3-0.8 0.5l48.5 66.6v-1.7z" fill="#FDFFFF" ></path><path d="M517.6 506l3.6 4.9h1.2l-4.8-6.6z" fill="#FDFFFF" ></path><path d="M517.6 507.6V506l-48.5-66.6c-0.3 0.2-0.6 0.3-0.8 0.5l49.3 67.7zM521.2 510.9H520l46 63.1c0.2-0.2 0.5-0.4 0.7-0.6l-45.5-62.5zM517.6 506l3.6 4.9-3.6-4.9z" fill="#FCFFFE" ></path><path d="M517.6 507.6l0.6 0.8 1.8 2.5h1.2l-3.6-4.9zM517.6 507.6l0.6 0.8z" fill="#FCFFFE" ></path><path d="M520 510.9h-1.2l46.4 63.8c0.2-0.2 0.5-0.4 0.7-0.6L520 510.9zM517.6 507.6l-49.3-67.7c-0.3 0.2-0.5 0.3-0.8 0.5l50.1 68.8v-1.6zM520 510.9l-1.8-2.5z" fill="#FAFFFE" ></path><path d="M517.6 507.6v1.6l1.2 1.7h1.2l-1.8-2.5z" fill="#FAFFFE" ></path><path d="M518.8 510.9h-1.2l46.9 64.4c0.2-0.2 0.5-0.4 0.7-0.6l-46.4-63.8zM517.6 509.2l-50.1-68.8c-0.3 0.2-0.5 0.3-0.8 0.5l50.9 69.9v-1.6zM517.6 509.2l1.2 1.7-1.2-1.7z" fill="#F8FFFE" ></path><path d="M517.6 510.8v0.1h1.2l-1.2-1.7zM517.6 510.9v-0.1z" fill="#F8FFFE" ></path><path d="M517.6 510.9L466.7 441c-0.3 0.2-0.5 0.3-0.8 0.5l97.9 134.4c0.2-0.2 0.5-0.4 0.8-0.6l-47-64.4zM517.6 510.8zM517.6 510.8v0.1-0.1z" fill="#F6FEFD" ></path><path d="M465.1 442L563 576.4c0.3-0.2 0.5-0.4 0.8-0.6l-97.9-134.4c-0.3 0.2-0.6 0.4-0.8 0.6z" fill="#F5FEFD" ></path><path d="M464.3 442.5l98 134.5c0.3-0.2 0.5-0.4 0.8-0.6l-98-134.4c-0.3 0.1-0.5 0.3-0.8 0.5z" fill="#F3FEFD" ></path><path d="M463.5 443.1l98 134.5c0.3-0.2 0.5-0.4 0.8-0.6l-98-134.5c-0.3 0.2-0.5 0.4-0.8 0.6z" fill="#F1FEFC" ></path><path d="M462.7 443.6l98 134.5c0.3-0.2 0.5-0.4 0.8-0.6l-98-134.5c-0.2 0.3-0.5 0.4-0.8 0.6z" fill="#F0FEFC" ></path><path d="M462 444.2l98 134.5c0.3-0.2 0.5-0.4 0.8-0.6l-98-134.5c-0.3 0.2-0.6 0.4-0.8 0.6z" fill="#EEFEFC" ></path><path d="M461.2 444.8l98 134.5c0.3-0.2 0.5-0.4 0.8-0.6l-98-134.5c-0.3 0.2-0.5 0.4-0.8 0.6z" fill="#ECFEFB" ></path><path d="M460.4 445.4l97.9 134.5c0.3-0.2 0.5-0.4 0.8-0.6l-98-134.5c-0.2 0.2-0.4 0.4-0.7 0.6z" fill="#EAFEFB" ></path><path d="M459.7 446l97.9 134.4c0.3-0.2 0.5-0.3 0.8-0.5l-97.9-134.5c-0.3 0.2-0.6 0.4-0.8 0.6z" fill="#E9FEFB" ></path><path d="M458.9 446.5l97.8 134.3c0.3-0.2 0.5-0.3 0.8-0.5L459.7 446c-0.3 0.2-0.5 0.3-0.8 0.5z" fill="#E7FEFA" ></path><path d="M458.2 447.2L556 581.4c0.3-0.2 0.5-0.3 0.8-0.5L459 446.6c-0.3 0.2-0.5 0.4-0.8 0.6z" fill="#E5FDFA" ></path><path d="M457.5 447.8l97.7 134.1c0.3-0.2 0.5-0.3 0.8-0.5l-97.7-134.2c-0.3 0.2-0.6 0.4-0.8 0.6z" fill="#E4FDFA" ></path><path d="M456.8 448.4l97.6 134c0.3-0.2 0.6-0.3 0.8-0.5l-97.7-134.1c-0.3 0.2-0.5 0.4-0.7 0.6z" fill="#E2FDF9" ></path><path d="M456 449.1l97.5 133.8c0.3-0.2 0.6-0.3 0.8-0.5l-97.6-134-0.7 0.7z" fill="#E0FDF9" ></path><path d="M455.3 449.7l97.3 133.6c0.3-0.2 0.6-0.3 0.8-0.5L456 449.1c-0.2 0.2-0.4 0.4-0.7 0.6z" fill="#DEFDF9" ></path><path d="M454.6 450.4l97.2 133.5c0.3-0.2 0.6-0.3 0.8-0.5l-97.3-133.6c-0.2 0.1-0.4 0.4-0.7 0.6z" fill="#DDFDF8" ></path><path d="M453.9 451l97 133.3c0.3-0.2 0.6-0.3 0.8-0.5l-97.2-133.5c-0.1 0.3-0.3 0.5-0.6 0.7z" fill="#DBFDF8" ></path><path d="M453.2 451.7l96.9 133c0.3-0.1 0.6-0.3 0.9-0.4L454 451c-0.3 0.3-0.5 0.5-0.8 0.7z" fill="#D9FDF8" ></path><path d="M452.5 452.4l96.7 132.8c0.3-0.1 0.6-0.3 0.9-0.4l-96.9-133c-0.2 0.1-0.4 0.4-0.7 0.6z" fill="#D8FDF7" ></path><path d="M451.9 453.1l96.5 132.5c0.3-0.1 0.6-0.3 0.9-0.4l-96.7-132.8c-0.3 0.2-0.5 0.5-0.7 0.7z" fill="#D6FCF7" ></path><path d="M451.2 453.8l96.3 132.3c0.3-0.1 0.6-0.3 0.9-0.4l-96.5-132.5c-0.2 0.1-0.5 0.4-0.7 0.6z" fill="#D4FCF7" ></path><path d="M450.5 454.5l96.1 132c0.3-0.1 0.6-0.3 0.9-0.4l-96.3-132.3c-0.2 0.2-0.4 0.5-0.7 0.7z" fill="#D2FCF6" ></path><path d="M449.9 455.2l95.9 131.6c0.3-0.1 0.6-0.3 0.9-0.4l-96.1-132c-0.3 0.3-0.5 0.6-0.7 0.8z" fill="#D1FCF6" ></path><path d="M449.2 456l95.6 131.3c0.3-0.1 0.6-0.3 0.9-0.4l-95.9-131.6c-0.1 0.2-0.4 0.4-0.6 0.7z" fill="#CFFCF6" ></path><path d="M448.6 456.7l95.4 131c0.3-0.1 0.6-0.3 0.9-0.4L449.2 456c-0.2 0.2-0.4 0.5-0.6 0.7z" fill="#CDFCF5" ></path><path d="M447.9 457.5L543 588c0.3-0.1 0.6-0.2 0.9-0.4l-95.4-131c-0.1 0.4-0.3 0.6-0.6 0.9z" fill="#CCFCF5" ></path><path d="M447.3 458.2l94.8 130.2c0.3-0.1 0.6-0.2 0.9-0.4l-95.1-130.6c-0.2 0.3-0.4 0.6-0.6 0.8z" fill="#CAFCF5" ></path><path d="M446.7 459l94.5 129.8c0.3-0.1 0.6-0.2 0.9-0.4l-94.8-130.2c-0.2 0.3-0.4 0.5-0.6 0.8z" fill="#C8FCF4" ></path><path d="M446.1 459.8l94.2 129.3c0.3-0.1 0.6-0.2 0.9-0.4L446.7 459c-0.2 0.2-0.4 0.5-0.6 0.8z" fill="#C6FCF4" ></path><path d="M445.5 460.6l93.9 128.9 0.9-0.3-94.2-129.3c-0.2 0.1-0.4 0.4-0.6 0.7z" fill="#C5FBF4" ></path><path d="M444.9 461.3l93.5 128.4 0.9-0.3-93.9-128.9c-0.1 0.3-0.3 0.6-0.5 0.8z" fill="#C3FBF3" ></path><path d="M444.3 462.2l93.2 127.9 0.9-0.3-93.5-128.4c-0.2 0.2-0.4 0.5-0.6 0.8z" fill="#C1FBF3" ></path><path d="M443.7 463l92.8 127.4 0.9-0.3-93.2-127.9c-0.1 0.2-0.3 0.5-0.5 0.8z" fill="#C0FBF3" ></path><path d="M443.1 463.8l92.4 126.9c0.3-0.1 0.7-0.2 1-0.3L443.7 463c-0.2 0.3-0.4 0.5-0.6 0.8z" fill="#BEFBF2" ></path><path d="M442.5 464.6l92 126.3c0.3-0.1 0.7-0.2 1-0.3l-92.4-126.9c-0.2 0.4-0.4 0.7-0.6 0.9z" fill="#BCFBF2" ></path><path d="M442 465.5l91.6 125.7c0.3-0.1 0.7-0.2 1-0.3l-92-126.3c-0.3 0.3-0.4 0.6-0.6 0.9z" fill="#BAFBF2" ></path><path d="M441.4 466.4l91.1 125.1c0.3-0.1 0.7-0.2 1-0.3L442 465.5l-0.6 0.9z" fill="#B9FBF2" ></path><path d="M440.9 467.2l90.7 124.5c0.3-0.1 0.7-0.2 1-0.2l-91.1-125.1c-0.3 0.3-0.5 0.5-0.6 0.8z" fill="#B7FBF1" ></path><path d="M440.3 468.1L530.5 592c0.3-0.1 0.7-0.2 1-0.2l-90.7-124.5c-0.1 0.2-0.3 0.5-0.5 0.8z" fill="#B5FAF1" ></path><path d="M439.8 469l89.7 123.2c0.3-0.1 0.7-0.2 1-0.2l-90.2-123.9c-0.2 0.3-0.3 0.6-0.5 0.9z" fill="#B3FAF1" ></path><path d="M439.3 469.9l89.2 122.5c0.3-0.1 0.7-0.2 1-0.2L439.8 469c-0.2 0.3-0.3 0.6-0.5 0.9z" fill="#B2FAF0" ></path><path d="M438.8 470.8l88.7 121.8c0.3-0.1 0.7-0.1 1-0.2l-89.2-122.5c-0.2 0.3-0.4 0.6-0.5 0.9z" fill="#B0FAF0" ></path><path d="M438.3 471.8l88.2 121.1c0.3-0.1 0.7-0.1 1-0.2l-88.7-121.8c-0.2 0.3-0.4 0.6-0.5 0.9z" fill="#AEFAF0" ></path><path d="M437.8 472.7L525.4 593c0.4-0.1 0.7-0.1 1-0.2l-88.2-121.1c-0.1 0.4-0.3 0.7-0.4 1z" fill="#ADFAEF" ></path><path d="M437.3 473.7l87 119.5c0.4-0.1 0.7-0.1 1-0.2l-87.6-120.3c-0.1 0.4-0.3 0.7-0.4 1z" fill="#ABFAEF" ></path><path d="M436.8 474.6l86.4 118.7c0.4-0.1 0.7-0.1 1.1-0.1l-87-119.5c-0.2 0.3-0.4 0.6-0.5 0.9z" fill="#A9FAEF" ></path><path d="M436.3 475.6l85.8 117.8c0.4 0 0.7-0.1 1.1-0.1l-86.4-118.7c-0.2 0.4-0.3 0.7-0.5 1z" fill="#A7FAEE" ></path><path d="M435.9 476.6l85.2 117c0.4 0 0.7-0.1 1.1-0.1l-85.8-117.8c-0.2 0.3-0.4 0.6-0.5 0.9z" fill="#A6F9EE" ></path><path d="M435.4 477.6L520 593.7c0.4 0 0.7-0.1 1.1-0.1l-85.2-117c-0.2 0.4-0.3 0.7-0.5 1z" fill="#A4F9EE" ></path><path d="M435 478.6l83.9 115.2c0.4 0 0.7 0 1.1-0.1l-84.6-116.1c-0.1 0.4-0.3 0.7-0.4 1z" fill="#A2F9ED" ></path><path d="M434.6 479.7l83.2 114.2c0.4 0 0.7-0.1 1.1-0.1L435 478.6c-0.2 0.4-0.3 0.8-0.4 1.1z" fill="#A1F9ED" ></path><path d="M434.1 480.8L516.6 594c0.4 0 0.7-0.1 1.1-0.1l-83.2-114.2c-0.1 0.4-0.2 0.7-0.4 1.1z" fill="#9FF9ED" ></path><path d="M433.7 481.8l81.8 112.3c0.4 0 0.8 0 1.1-0.1l-82.5-113.2c-0.1 0.3-0.2 0.7-0.4 1z" fill="#9DF9EC" ></path><path d="M433.3 482.9l81 111.2h1.2l-81.8-112.3c-0.1 0.4-0.2 0.7-0.4 1.1z" fill="#9BF9EC" ></path><path d="M433 484l80.2 110.1h1.2l-81-111.2c-0.2 0.4-0.3 0.7-0.4 1.1z" fill="#9AF9EC" ></path><path d="M432.6 485.1l79.4 109h1.2L433 484c-0.2 0.4-0.3 0.7-0.4 1.1z" fill="#98F9EB" ></path><path d="M432.2 486.2l78.6 107.9h1.2l-79.4-109c-0.1 0.4-0.3 0.7-0.4 1.1z" fill="#96F9EB" ></path><path d="M431.9 487.4l77.7 106.7h1.2l-78.6-107.9-0.3 1.2z" fill="#95F8EB" ></path><path d="M431.5 488.6l76.8 105.5h1.2l-77.7-106.7c0 0.4-0.2 0.8-0.3 1.2z" fill="#93F8EA" ></path><path d="M431.2 489.7l76 104.3h1.2l-76.8-105.5c-0.2 0.4-0.3 0.8-0.4 1.2z" fill="#91F8EA" ></path><path d="M430.9 490.9l75 103c0.4 0 0.8 0.1 1.3 0.1l-76-104.3-0.3 1.2z" fill="#8FF8EA" ></path><path d="M430.6 492.2l74 101.7c0.4 0 0.8 0.1 1.3 0.1l-75-103c-0.1 0.3-0.2 0.8-0.3 1.2z" fill="#8EF8E9" ></path><path d="M430.3 493.4l73.1 100.3c0.4 0 0.8 0.1 1.3 0.1l-74-101.7c-0.2 0.5-0.3 0.9-0.4 1.3z" fill="#8CF8E9" ></path><path d="M430.1 494.7l72 98.9c0.4 0 0.9 0.1 1.3 0.2l-73.1-100.3c-0.1 0.3-0.1 0.7-0.2 1.2z" fill="#8AF8E9" ></path><path d="M429.8 496l71 97.4c0.4 0.1 0.9 0.1 1.3 0.2l-72-98.9c-0.1 0.4-0.2 0.8-0.3 1.3z" fill="#89F8E8" ></path><path d="M429.6 497.3l69.9 96c0.4 0.1 0.9 0.1 1.3 0.2l-71-97.4c0 0.3-0.1 0.7-0.2 1.2z" fill="#87F8E8" ></path><path d="M429.4 498.6l68.8 94.4c0.4 0.1 0.9 0.2 1.3 0.2l-69.9-96c-0.1 0.5-0.2 1-0.2 1.4z" fill="#85F7E8" ></path><path d="M429.2 500l67.6 92.8c0.5 0.1 0.9 0.2 1.4 0.2l-68.8-94.4c-0.1 0.5-0.1 0.9-0.2 1.4z" fill="#83F7E7" ></path><path d="M429 501.4l66.4 91.2c0.5 0.1 0.9 0.2 1.4 0.2L429.2 500c-0.1 0.4-0.1 0.9-0.2 1.4z" fill="#82F7E7" ></path><path d="M428.9 502.8l65.2 89.5c0.5 0.1 0.9 0.2 1.4 0.3L429 501.4c0 0.4-0.1 0.9-0.1 1.4z" fill="#80F7E7" ></path><path d="M428.8 504.2l63.9 87.7c0.5 0.1 0.9 0.2 1.4 0.3l-65.2-89.5c-0.1 0.6-0.1 1.1-0.1 1.5z" fill="#7EF7E6" ></path><path d="M428.6 505.7l62.5 85.9c0.5 0.1 0.9 0.2 1.4 0.3l-63.9-87.7c0.1 0.5 0.1 1 0 1.5z" fill="#7CF7E6" ></path><path d="M428.6 507.2l61.1 84c0.5 0.1 1 0.3 1.5 0.4l-62.5-85.9c-0.1 0.5-0.1 1-0.1 1.5z" fill="#7BF7E6" ></path><path d="M428.5 508.8l59.7 82c0.5 0.1 1 0.3 1.5 0.4l-61.1-84c-0.1 0.5-0.1 1.1-0.1 1.6z" fill="#79F7E5" ></path><path d="M428.5 510.4l58.2 79.9c0.5 0.2 1 0.3 1.5 0.4l-59.7-82v1.7z" fill="#77F7E5" ></path><path d="M428.5 510.9v1.1l56.6 77.8c0.5 0.2 1 0.4 1.6 0.5l-58.2-79.9v0.5z" fill="#76F7E5" ></path><path d="M428.5 513.7l55 75.6c0.5 0.2 1 0.4 1.6 0.5L428.5 512v1.7z" fill="#74F6E4" ></path><path d="M428.6 515.4l53.3 73.2c0.5 0.2 1.1 0.4 1.6 0.6l-55-75.6c0.1 0.7 0.1 1.2 0.1 1.8z" fill="#72F6E4" ></path><path d="M428.7 517.2l51.5 70.8c0.6 0.2 1.1 0.4 1.7 0.7l-53.3-73.2c0 0.5 0.1 1.1 0.1 1.7z" fill="#70F6E4" ></path><path d="M428.9 519l49.7 68.2c0.6 0.2 1.1 0.5 1.7 0.7l-51.5-70.8c0 0.7 0 1.3 0.1 1.9z" fill="#6FF6E3" ></path><path d="M429.1 521l47.7 65.5c0.6 0.3 1.2 0.5 1.8 0.8L428.9 519c0 0.7 0.1 1.3 0.2 2z" fill="#6DF6E3" ></path><path d="M476.8 586.5L429.1 521c3.5 29.1 22.1 53.6 47.7 65.5z" fill="#6DF6E3" ></path></symbol><symbol id="icon-reply" viewBox="0 0 1024 1024"><path d="M512 0C229.259636 0 0 229.236364 0 512s229.236364 512 512 512c109.381818 0 210.501818-34.536727 293.701818-92.974545l167.121455 41.774545-41.774546-167.121455A509.137455 509.137455 0 0 0 1024 512C1024 229.236364 794.786909 0 512 0m0 947.2C271.662545 947.2 76.8 752.337455 76.8 512S271.662545 76.8 512 76.8c240.384 0 435.223273 194.862545 435.223273 435.2a433.338182 433.338182 0 0 1-103.424 281.297455l25.041454 77.91709-76.8-26.274909A433.221818 433.221818 0 0 1 512 947.2" ></path><path d="M308.363636 525.568m-60.113454 0a60.113455 60.113455 0 1 0 120.226909 0 60.113455 60.113455 0 1 0-120.226909 0Z" ></path><path d="M517.818182 525.568m-60.113455 0a60.113455 60.113455 0 1 0 120.226909 0 60.113455 60.113455 0 1 0-120.226909 0Z" ></path><path d="M727.272727 525.568m-60.113454 0a60.113455 60.113455 0 1 0 120.226909 0 60.113455 60.113455 0 1 0-120.226909 0Z" ></path></symbol><symbol id="icon-comment" viewBox="0 0 1024 1024"><path d="M113.834667 291.84v449.194667a29.013333 29.013333 0 0 0 28.842666 29.013333h252.928v90.453333l160.597334-90.453333h252.928a29.013333 29.013333 0 0 0 29.013333-29.013333V291.84a29.013333 29.013333 0 0 0-29.013333-29.013333h-665.6a29.013333 29.013333 0 0 0-29.696 29.013333z" fill="#FFDEAD" ></path><path d="M809.130667 262.826667h-665.6a29.013333 29.013333 0 0 0-28.842667 29.013333v40.106667a29.013333 29.013333 0 0 1 28.842667-29.013334h665.6a29.013333 29.013333 0 0 1 29.013333 29.013334V291.84a29.013333 29.013333 0 0 0-29.013333-29.013333z" fill="#FFF3DB" ></path><path d="M556.202667 770.048h252.928a29.013333 29.013333 0 0 0 29.013333-29.013333V362.837333s-59.733333 392.533333-724.309333 314.709334v63.488a29.013333 29.013333 0 0 0 28.842666 29.013333h253.098667v90.453333z" fill="#F2C182" ></path><path d="M619.008 632.32l101.888-35.157333-131.754667-76.117334 29.866667 111.274667zM891.904 148.992a61.44 61.44 0 0 0-84.138667 22.528l-19.968 34.133333 106.666667 61.610667 19.968-34.133333a61.781333 61.781333 0 0 0-22.528-84.138667z" fill="#69BAF9" ></path><path d="M775.338667 198.775467l131.669333 76.032-186.026667 322.218666-131.6864-76.032z" fill="#F7FBFF" ></path><path d="M775.168 198.826667l-5.290667 9.216 59.221334 34.133333a34.133333 34.133333 0 0 1 12.458666 46.592l-139.946666 242.346667a34.133333 34.133333 0 0 1-46.762667 12.629333l-59.050667-34.133333-6.656 11.434666 88.746667 51.2L720.896 597.333333l186.026667-322.56z" fill="#D8E3F0" ></path><path d="M616.448 622.592l2.56 9.728 101.888-35.157333-44.885333-25.941334-59.562667 51.370667zM891.904 148.992c-1.024 0-2.218667-0.853333-3.242667-1.536A61.610667 61.610667 0 0 1 887.466667 204.8l-19.968 34.133333-73.728-42.496-5.12 8.704 106.666666 61.610667 19.968-34.133333a61.781333 61.781333 0 0 0-23.381333-83.626667z" fill="#599ED4" ></path><path d="M265.898667 417.621333H494.933333a17.066667 17.066667 0 1 0 0-34.133333H265.898667a17.066667 17.066667 0 1 0 0 34.133333zM265.898667 533.504H494.933333a17.066667 17.066667 0 0 0 0-34.133333H265.898667a17.066667 17.066667 0 0 0 0 34.133333z" fill="#3D3D63" ></path><path d="M959.488 354.645333a99.84 99.84 0 0 0-23.722667-127.488 78.677333 78.677333 0 0 0-142.848-64.170666l-11.605333 20.138666a17.066667 17.066667 0 0 0-20.821333 7.168l-32.085334 55.466667H142.677333a46.250667 46.250667 0 0 0-45.909333 46.08v449.194667a46.08 46.08 0 0 0 45.909333 46.08h236.032v73.386666a17.066667 17.066667 0 0 0 8.362667 14.848 17.066667 17.066667 0 0 0 8.704 2.218667 17.066667 17.066667 0 0 0 8.362667-2.218667l156.672-88.234666h248.32a46.08 46.08 0 0 0 46.08-46.08V398.677333L921.6 283.306667a17.066667 17.066667 0 0 0-4.266667-21.504l1.877334-3.413334a65.365333 65.365333 0 0 1 10.410666 79.189334l-53.077333 91.989333a56.832 56.832 0 0 0 20.821333 77.653333 17.066667 17.066667 0 0 0 24.234667-6.314666 17.066667 17.066667 0 0 0-6.997333-23.04 23.04 23.04 0 0 1-8.362667-31.061334z m-138.410667 386.389334a11.946667 11.946667 0 0 1-11.946666 11.946666H556.202667a17.066667 17.066667 0 0 0-8.362667 2.218667l-134.997333 76.117333v-61.269333a17.066667 17.066667 0 0 0-17.066667-17.066667H142.677333a11.946667 11.946667 0 0 1-11.776-11.946666V291.84a11.946667 11.946667 0 0 1 11.776-11.946667h565.930667L574.464 512a17.066667 17.066667 0 0 0-1.706667 12.970667L597.333333 615.253333H265.898667a17.066667 17.066667 0 1 0 0 34.133334h352.938666a17.066667 17.066667 0 0 0 5.802667 0l102.4-35.328a17.066667 17.066667 0 0 0 9.216-7.509334l85.333333-147.968z m-204.8-184.661334l63.829334 36.864-49.322667 17.066667z m206.848-170.666666v1.365333l-108.373333 186.709333-102.4-59.050666L781.482667 221.866667l102.4 59.050666z m76.458667-161.28L887.466667 244.224l-76.970667-44.373333 11.264-19.797334a44.544 44.544 0 1 1 77.141333 44.544z" fill="#3D3D63" ></path></symbol><symbol id="icon-wetchat" viewBox="0 0 1024 1024"><path d="M650.9 443.59c108.15 0 195.82 80.32 195.82 179.41 0 38.51-13.25 74.17-35.79 103.4l40.92 80.6-100.17-30.22a208.34 208.34 0 0 1-100.78 25.64c-108.15 0-195.82-80.33-195.82-179.42s87.67-179.41 195.82-179.41z" fill="#FDD668" ></path><path d="M598.8 590.15c0.08-19.87-14.7-35.26-33.92-35.32-19-0.07-34.67 15.76-34.7 35s15.5 35.41 34.27 35.49c19.03 0.05 34.27-15.54 34.35-35.17z m109.36 0.62c0.37 19.56 16 35 35 34.51 18.73-0.45 34.08-16.94 33.61-36.11s-16.32-34.82-35.2-34.42-33.77 16.25-33.41 36.02zM356.31 392.79c0.08-19.88-14.7-35.27-33.93-35.33-18.95-0.06-34.66 15.76-34.69 35s15.49 35.41 34.27 35.49c19.04 0.05 34.27-15.54 34.35-35.16z m109.36 0.61c0.36 19.56 16 35 35 34.51 18.73-0.45 34.08-16.94 33.61-36.11s-16.33-34.82-35.2-34.42c-19.08 0.4-33.77 16.28-33.41 36.02z" ></path><path d="M894.64 785.26l-28.26-55.69A214 214 0 0 0 894.72 623c0-107.34-80.25-197.34-187.67-221.09-3.41-25.37-16.85-57.18-19-62.1C653.83 261.53 533.7 177.7 409.48 177.7c-174.18 0-315.87 130.75-315.87 291.46 0 55.89 17 109.65 49.28 156.37L63.14 782.61l193.59-58.39c59.8 30.49 129.41 42.18 197.88 33.11 44.42 56.32 115.75 93.09 196.3 93.09a258.38 258.38 0 0 0 105-22.21L838 853l107.47 32.4zM270.86 677.37L262 672.5l-105.23 31.73 42.43-83.61-9.25-12c-31.62-41-48.34-89.26-48.34-139.46 0-134.24 120.16-243.46 267.87-243.46 100.91 0 207.07 70.41 234.6 133.35 2.62 6 8.26 23 12.26 36.79-1.82 0-3.61-0.25-5.43-0.25-134.46 0-243.83 102-243.83 227.41a213.23 213.23 0 0 0 19.37 88.79c-54.59 3.13-108.98-8.74-155.59-34.42z m480.81 99.41a208.29 208.29 0 0 1-100.76 25.64c-108.16 0-195.83-80.33-195.83-179.42s87.67-179.41 195.83-179.41S846.72 523.91 846.72 623c0 38.51-13.25 74.17-35.78 103.4l40.9 80.6z" ></path></symbol><symbol id="icon-message" viewBox="0 0 1024 1024"><path d="M914.23744 216.27904c0 75.74528-61.39904 137.14432-137.14432 137.14432H685.6704c-42.88512 0-80.68096-20.09088-105.8304-50.92352-41.60512 12.58496-91.68896 12.4416-153.21088-10.02496 68.4544 5.74464 94.43328 2.26304 130.65216-29.37856-5.35552-14.67392-8.74496-30.30016-8.74496-46.81728 0-75.74528 61.39904-137.14432 137.14432-137.14432h91.42272c75.73504 0 137.13408 61.39904 137.13408 137.14432zM304.72192 109.60896a91.42272 91.42272 0 1 1 0 182.85568 91.42272 91.42272 0 0 1 0-182.85568z m60.94848 213.32992a538.4704 538.4704 0 0 1-36.608 133.41696c0.95232-52.31616-9.10336-102.94272-9.10336-102.94272s15.23712-16.15872 15.23712-30.47424h-60.94848c0 14.31552 15.23712 30.47424 15.23712 30.47424s-10.0864 50.71872-9.10336 103.09632a540.08832 540.08832 0 0 1-36.608-133.57056c-30.47424 0-121.89696 0-121.89696 91.42272V536.2688c0 91.42272 60.94848 91.42272 60.94848 91.42272v274.2784a60.94848 60.94848 0 0 0 121.89696 0 60.94848 60.94848 0 0 0 121.89696 0V627.69152s60.94848 0 60.94848-91.42272V414.3616c0.01024-91.42272-91.41248-91.42272-121.89696-91.42272z m441.89696-152.3712h-152.3712c-8.42752 0-15.23712 6.8096-15.23712 15.23712s6.8096 15.23712 15.23712 15.23712h152.38144a15.22688 15.22688 0 1 0-0.01024-30.47424z m0 60.94848h-152.3712c-8.42752 0-15.23712 6.8096-15.23712 15.23712s6.8096 15.23712 15.23712 15.23712h152.38144a15.23712 15.23712 0 1 0-0.01024-30.47424z" fill="#333333" ></path></symbol><symbol id="icon-me" viewBox="0 0 1024 1024"><path d="M690.49344 296.66304c-4.83328-0.74752-9.65632 0-14.29504 1.50528 1.56672-29.48096 2.31424-61.02016 0.24576-84.41856-3.51232-37.87776-26.83904-78.01856-48.97792-94.19776-35.24608-25.58976-89.74336-37.376-110.31552-37.376-20.44928 0-75.06944 11.78624-110.25408 37.376-22.20032 16.1792-45.4656 56.32-48.91648 94.19776-2.12992 23.3984-1.3824 54.9376 0.18432 84.41856-4.63872-1.50528-9.46176-2.26304-14.35648-1.50528-14.17216 2.12992-23.9616 16.25088-16.9984 50.61632 6.90176 34.42688 16.93696 57.26208 33.87392 55.94112 1.00352-0.06144 1.56672-0.44032 2.5088-0.62464 5.59104 43.71456 48.7936 112.88576 86.23104 137.59488 9.53344 13.35296 36.31104 24.5248 67.7376 23.58272 31.42656 0.94208 58.32704-10.21952 67.7376-23.58272 37.56032-24.70912 80.65024-93.88032 86.23104-137.59488 0.94208 0.18432 1.50528 0.5632 2.5088 0.62464 16.9984 1.32096 27.0336-21.51424 33.87392-55.94112 7.00416-34.37568-2.77504-48.4864-17.01888-50.61632zM806.144 660.16256c-64.1536-32.11264-160.55296-64.21504-160.55296-64.21504-11.47904 70.99392-42.1376 153.40544-84.92032 225.14688a1344.64512 1344.64512 0 0 0-11.34592-122.4192c10.84416-17.05984 17.94048-31.10912 22.51776-42.27072 5.38624-13.60896-4.25984-28.34432-18.56512-28.34432h-72.12032c-14.42816 0-23.90016 14.92992-18.56512 28.34432 4.57728 11.1616 11.66336 25.21088 22.51776 42.27072-6.27712 44.40064-9.59488 86.29248-11.4176 122.4192-42.77248-71.61856-73.50272-154.15296-84.97152-225.14688 0 0-96.32768 32.11264-160.55296 64.21504-64.1536 32.11264-96.32768 75.25376-96.32768 160.55296v48.16896a80.2816 80.2816 0 0 0 80.34304 80.27136h609.95584a80.2816 80.2816 0 0 0 80.34304-80.27136v-48.16896c-0.01024-85.2992-32.18432-128.45056-96.33792-160.55296z" fill="#333333" ></path></symbol><symbol id="icon-user03" viewBox="0 0 1024 1024"><path d="M512 0c281.6 0 512 230.4 512 512s-230.4 512-512 512-512-230.4-512-512 230.4-512 512-512z m115.2 505.6c44.8-38.4 76.8-89.6 76.8-153.6 0-108.8-83.2-192-192-192s-192 83.2-192 192c0 64 32 115.2 76.8 153.6-102.4 44.8-172.8 147.2-172.8 262.4 0 19.2 12.8 32 32 32s32-12.8 32-32c0-121.6 102.4-224 224-224s224 102.4 224 224c0 19.2 12.8 32 32 32s32-12.8 32-32c0-115.2-70.4-217.6-172.8-262.4zM512 480c-70.4 0-128-57.6-128-128s57.6-128 128-128 128 57.6 128 128-57.6 128-128 128z" ></path></symbol><symbol id="icon-user02" viewBox="0 0 1024 1024"><path d="M956.696128 512.75827c0 245.270123-199.054545 444.137403-444.615287 444.137403-245.538229 0-444.522166-198.868303-444.522166-444.137403 0-188.264804 117.181863-349.108073 282.675034-413.747255 50.002834-20.171412 104.631012-31.311123 161.858388-31.311123 57.297984 0 111.87909 11.128455 161.928996 31.311123C839.504032 163.650197 956.696128 324.494489 956.696128 512.75827L956.696128 512.75827M341.214289 419.091984c0 74.846662 38.349423 139.64855 94.097098 171.367973 23.119557 13.155624 49.151443 20.742417 76.769454 20.742417 26.64894 0 51.773154-7.096628 74.286913-19.355837 57.06467-31.113625 96.650247-96.707552 96.650247-172.742273 0-105.867166-76.664054-192.039781-170.936137-192.039781C417.867086 227.053226 341.214289 313.226864 341.214289 419.091984L341.214289 419.091984M513.886977 928.114163c129.883139 0 245.746984-59.732429 321.688583-153.211451-8.971325-73.739445-80.824817-136.51314-182.517917-167.825286-38.407752 34.55091-87.478354 55.340399-140.989081 55.340399-54.698786 0-104.770182-21.907962-143.55144-57.96211-98.921987 28.234041-171.379229 85.823668-188.368158 154.831344C255.507278 861.657588 376.965537 928.114163 513.886977 928.114163L513.886977 928.114163M513.886977 928.114163 513.886977 928.114163z" ></path></symbol><symbol id="icon-label01" viewBox="0 0 1024 1024"><path d="M719.36 131.072l11.264 122.368c1.536 14.336 14.336 25.088 28.672 24.064 14.336-1.536 25.088-14.336 24.064-28.672l-11.264-122.368-52.736 4.608z" fill="#425768" ></path><path d="M930.816 219.648l-329.728 0.512L532.48 365.568V965.12h467.456V365.568z" fill="#87C596" ></path><path d="M761.344 647.168c-3.584-1.024-7.168-2.56-10.752-4.608-3.584-1.536-10.24-5.12-19.968-10.752s-17.408-11.776-23.04-18.944c-5.632-7.168-10.24-14.336-13.312-22.016-3.072-7.68-4.096-15.872-3.584-25.088 0.512-15.36 4.608-26.624 12.288-34.816 7.68-8.192 14.848-14.336 22.528-18.432 7.68-4.096 14.848-7.168 22.528-8.704l13.312-3.072V488.448h16.896v12.8c4.608 0 8.192 0.512 10.752 0.512 3.072 0 6.144 1.024 10.24 1.536 4.096 1.024 11.264 2.56 20.992 5.632 9.728 2.56 17.92 8.192 24.576 15.872s9.728 14.848 9.728 20.992c0 6.656-3.072 12.8-8.704 17.408-5.632 5.12-12.288 7.168-19.456 7.68-7.68 0-13.824-2.048-18.944-7.168-5.12-4.608-7.68-10.24-7.168-16.384 0-5.12 2.048-9.728 5.632-14.336 3.584-4.096 5.632-6.656 5.632-7.68 0-2.048-3.072-4.096-8.704-6.656s-10.752-4.096-14.848-4.608l-10.24-1.024v94.208c8.192 3.072 17.408 6.656 27.136 10.24s18.944 7.168 27.136 11.264c8.192 4.096 15.872 10.24 22.528 18.944 6.656 8.704 10.24 17.92 10.24 27.648 0 9.728-1.536 18.944-4.096 27.136-3.072 8.192-7.168 15.36-12.8 21.504-5.632 6.144-11.776 10.752-18.944 14.336-6.656 3.072-13.824 6.144-20.992 7.68s-14.336 3.584-21.504 4.096l-9.216 1.024v14.336h-16.896v-14.336c-5.632-1.024-10.752-1.536-14.336-2.56-4.096-1.024-8.704-2.048-13.824-4.096-5.12-2.048-10.24-4.096-14.336-6.144s-8.704-5.12-13.312-8.192c-4.608-3.584-9.216-7.68-13.312-13.824s-6.656-11.264-6.656-17.408c0-6.144 1.024-11.264 2.56-15.36 2.048-4.608 5.12-8.192 9.216-10.752s8.704-3.584 14.848-3.584c6.656 0 11.776 2.048 15.872 5.12 4.096 3.072 6.656 7.168 6.656 11.264 0.512 4.096 0 7.68-1.024 9.728-1.024 2.048-2.56 3.584-4.096 5.12l-8.192 5.12c-2.048 1.536-3.584 3.072-4.608 5.12-1.024 2.048 1.536 6.144 7.168 11.776 4.096 4.096 8.704 7.68 13.312 9.728s8.704 4.096 11.776 4.096l11.776 2.048V647.168z m0-132.608c-4.096 1.024-7.68 2.048-11.264 3.072-3.584 1.024-7.68 3.072-11.264 6.144-4.096 3.072-7.68 7.168-10.752 13.312-3.072 5.632-4.608 12.288-4.096 18.944 0 9.728 2.56 17.408 7.68 23.552s11.776 11.264 19.968 15.36l9.728 5.12V514.56z m16.384 225.28c5.632-1.024 12.288-2.048 20.48-4.096 7.68-2.048 14.336-6.656 19.456-13.824 5.12-7.168 7.68-14.848 7.68-23.552 0-8.704-1.536-15.36-5.12-19.968s-8.192-8.704-14.848-12.288c-6.144-3.584-12.8-6.144-18.944-8.704l-9.216-3.584v86.016z" fill="#FFFFFF" ></path><path d="M830.464 296.448l-253.952-210.432-145.92 68.096-382.976 461.824 359.936 298.496 382.976-461.824z" fill="#87C596" ></path><path d="M644.096 263.168m-30.208 0a30.208 30.208 0 1 0 60.416 0 30.208 30.208 0 1 0-60.416 0Z" fill="#528963" ></path><path d="M719.36 131.072l-78.848 94.72c-9.216 11.264-7.68 27.648 3.584 37.376 11.264 9.216 27.648 7.68 37.376-3.584l78.848-94.72-40.96-33.792z" fill="#425768" ></path><path d="M427.008 517.12c-2.048-3.072-3.584-6.656-5.632-10.24-2.048-3.584-4.608-10.752-8.192-20.992-3.584-10.24-5.632-19.968-5.632-29.184 0-9.216 1.536-17.408 4.096-25.088 2.56-7.68 7.168-14.848 13.312-21.504 10.24-11.264 20.992-17.408 31.744-18.944 10.752-1.536 20.48-1.536 29.184 0 8.192 1.536 15.872 4.096 22.528 7.68l12.288 6.144 7.68-9.728 12.8 10.752-8.192 9.728c3.584 3.072 6.144 5.12 8.192 7.168 2.048 2.048 4.608 4.608 7.168 7.68 2.56 3.072 6.656 9.216 12.8 17.408s8.704 17.92 8.704 28.16-2.048 17.92-5.632 22.528c-4.608 5.12-10.24 7.68-17.92 8.192-7.168 0.512-13.824-2.048-19.968-6.656-6.144-4.608-9.216-10.752-10.24-17.408-1.024-6.656 1.024-12.8 5.12-17.408 3.584-4.096 7.68-6.656 13.312-7.168 5.632-1.024 8.704-1.536 9.216-2.56 1.024-1.536 0.512-5.12-2.56-10.24-2.56-5.632-5.632-9.728-8.704-13.312L525.312 424.96 465.408 496.64c4.096 7.68 9.216 15.872 14.336 25.088 5.12 9.216 9.728 17.92 13.824 26.112 3.584 8.192 5.632 17.92 5.12 29.184-0.512 11.264-3.584 20.48-9.728 28.16s-12.8 13.824-20.48 17.92c-7.68 4.608-15.36 7.168-23.552 8.704-8.192 1.024-16.384 0.512-23.552-1.024-7.168-2.048-14.336-4.096-21.504-7.168-6.656-3.072-13.312-6.656-18.944-10.752l-7.68-5.12-9.216 11.264-12.8-10.752 9.216-11.264c-4.096-4.096-7.168-8.192-9.728-11.264-2.56-3.072-5.12-7.168-7.68-12.288s-5.12-9.728-7.168-13.824c-2.048-4.608-3.584-9.728-4.608-14.848-1.536-5.632-2.048-11.776-1.536-18.944s2.048-13.312 5.632-17.92c3.584-4.608 7.68-8.192 11.776-10.24 4.608-2.048 9.216-3.072 13.824-2.56 4.608 0.512 9.216 2.56 13.824 6.656 5.12 4.096 8.192 9.216 9.216 14.336 1.024 5.12 0.512 9.728-2.048 13.312s-4.608 5.632-7.168 7.168c-2.048 1.024-4.096 1.536-6.656 1.024l-9.216-1.536c-2.56 0-4.608 0-7.168 1.024-2.048 1.024-3.072 5.632-2.048 13.824 0.512 5.632 2.048 11.264 4.096 16.384s4.096 8.704 6.656 10.752l7.68 9.216L427.008 517.12z m-46.592 81.92c5.12 3.072 11.264 6.144 18.432 9.728s15.36 4.096 24.064 2.048c8.704-2.048 15.36-6.656 20.992-12.8 5.632-6.656 8.704-12.8 8.704-18.944 0.512-6.144-1.024-12.288-3.584-18.944-2.56-6.656-5.632-12.8-8.704-18.944l-4.608-8.704-55.296 66.56z m131.072-184.32c-3.584-1.536-7.168-3.584-10.752-4.608-3.584-1.536-7.68-2.048-12.8-2.56-5.12 0-10.752 1.024-16.384 3.584-6.144 2.56-11.264 6.656-15.36 11.776-6.144 7.68-9.216 15.36-8.704 23.04 0 7.68 2.048 15.872 5.632 24.576l4.096 10.24L511.488 414.72z" fill="#FFFFFF" ></path></symbol><symbol id="icon-recommend" viewBox="0 0 1024 1024"><path d="M524.288 106.496C472.064 106.496 430.08 144.896 430.08 192.512c0 122.88 94.208 299.52 94.208 299.52s94.208-177.664 94.208-299.52c-0.512-47.104-42.496-86.016-94.208-86.016M201.728 389.12C296.448 464.896 491.52 502.272 491.52 502.272S412.672 321.024 317.952 245.248c-36.864-29.696-92.672-20.992-124.928 18.432-31.744 39.424-27.648 95.744 8.704 125.44m562.688-101.888c6.144-4.608 13.824-7.168 21.504-7.168 14.336 0 28.672 7.68 38.912 20.48 15.872 20.48 14.336 48.128-3.072 61.44-45.568 34.304-119.296 59.392-178.176 75.776 32.768-54.784 76.8-117.76 120.832-150.528m84.992 111.104c37.888-28.16 43.008-84.48 11.776-125.44-18.944-25.088-47.616-38.4-75.264-38.4-17.408 0-34.816 5.12-49.152 16.384-97.792 73.728-181.76 253.44-181.76 253.44S752.64 471.04 849.408 398.336m21.504 117.248c-117.248-27.136-307.2 22.528-307.2 22.528s149.504 128 265.728 155.136c45.568 10.752 91.648-20.48 103.424-69.632 10.752-49.152-16.384-97.28-61.952-108.032m-333.312 41.984s-5.632 202.24 48.64 312.32c20.992 43.008 76.288 59.392 123.904 36.352 47.104-23.04 67.584-76.288 46.592-119.296-55.296-110.592-219.136-229.376-219.136-229.376m-245.76 228.864c-20.48 43.008 0.512 96.256 47.616 118.784 47.104 22.528 101.888 5.632 123.392-37.376 53.76-111.104 46.08-312.32 46.08-312.32s-163.84 120.832-217.088 230.912M174.08 510.464c-47.616 10.752-76.8 60.928-65.024 112.64 11.776 51.2 59.904 83.968 108.032 73.728 122.88-28.16 278.528-160.768 278.528-160.768s-199.168-53.76-321.536-25.6" fill="#FF6A00" ></path></symbol><symbol id="icon-date" viewBox="0 0 1024 1024"><path d="M521.9 92c132.957 0 251.507 61.844 328.48 158.462l2.32 2.938 56.4-44.1c5.137-4.05 12.715-0.488 12.993 5.963l0.007 0.237-0.8 180.9c0 5.016-4.74 8.775-9.654 7.755l-0.246-0.055-175.6-43c-6.417-1.58-8.253-9.786-3.2-13.94l0.2-0.16 60.2-47c-8.6-11-17.9-21.5-27.8-31.4-31.6-31.7-68.4-56.5-109.3-73.8-42.3-17.9-87.3-27-133.8-27-46.4 0-91.5 9.1-133.8 27-40.9 17.4-77.7 42.2-109.3 73.8-31.6 31.6-56.4 68.4-73.7 109.4-17.9 42.4-27 87.4-27 133.9s9.1 91.5 27 133.9c17.3 41 42.1 77.8 73.7 109.4 31.6 31.7 68.4 56.5 109.3 73.8 42.3 17.9 87.3 27 133.8 27 46.4 0 91.5-9.1 133.8-27 40.9-17.4 77.7-42.2 109.3-73.8 31.6-31.6 56.4-68.4 73.7-109.4 2.1-4.9 4.1-9.9 5.9-14.9 0.108-0.296 0.232-0.581 0.37-0.856C849.385 613.353 864.5 601 882.5 601c21.263 0 38.5 17.237 38.5 38.5a38.32 38.32 0 0 1-6.188 20.94C854.787 819.158 701.492 932 521.9 932 289.8 932 101.7 743.7 102 511.5 102.3 279.5 290 92 521.9 92zM514 280c17.673 0 32 14.327 32 32v225.126l126.248 88.4c14.477 10.137 17.996 30.09 7.859 44.567-10.137 14.477-30.09 17.996-44.568 7.859l-127.787-89.478a32.114 32.114 0 0 1-5.258-4.605C490.506 579.249 482 567.618 482 554V312c0-17.673 14.327-32 32-32z" ></path></symbol><symbol id="icon-hot" viewBox="0 0 1024 1024"><path d="M236.8512 392.0384s-34.304 179.9168 93.1328 274.9952c62.7712-112.4352 164.7104-137.5232 164.7104-137.5232s60.1088 183.1936 162.0992 208.7424c88.8832-39.8336 198.656-137.0112 218.2656-212.6336 14.1824 107.52 71.936 237.9264-232.6528 397.5168-86.1184-70.0416-166.0416-185.7536-172.544-228.7616-13.5168 116.5824-9.1648 207.7184 31.3856 248.3712-87.6032 14.4896-276.7872-65.3312-332.544-221.4912s68.1472-329.216 68.1472-329.216z" fill="#ffa115" ></path><path d="M791.04 327.7824a30.68928 30.68928 0 0 0-23.1424-10.5472h-0.1024c-8.9088 0-17.3568 3.9424-23.1936 10.7008l-5.4272 6.2976c-11.3152 13.2096-20.7872 24.2176-29.5424 33.8944 4.0448-24.7296 4.7616-51.9168-1.024-80.9984-16.64-83.5584-80.7936-159.7952-196.1472-233.0624-8.0384-5.12-18.0224-6.1952-26.9312-2.9184-8.96 3.2256-15.872 10.4448-18.7904 19.5584-0.3584 1.024-36.6592 111.616-159.1296 214.4768-140.5952 118.1184-201.216 197.4784-188.672 355.3792 13.056 164.0448 158.5664 332.8512 379.6992 332.8512h2.7648c10.7008-0.0512 20.6336-5.7344 26.1632-14.9504s5.8368-20.6336 0.8192-30.1056c-27.4432-52.1728-39.936-88.0128-41.8304-125.5936 33.8432 61.184 79.9744 120.32 143.4112 148.3776 6.7584 3.0208 14.3872 3.4304 21.4528 1.28 40.1408-12.3392 212.2752-97.024 258.048-257.536 32.9728-115.5072-6.8608-239.0528-118.4256-367.104z m59.3408 350.3104c-34.9184 122.4192-162.2016 193.1776-206.336 211.6608-54.3232-29.2864-100.9152-95.5392-145.7152-206.848a30.67392 30.67392 0 0 0-30.8224-19.1488 30.6688 30.6688 0 0 0-27.5456 23.6544c-20.5824 88.064-22.8352 141.9776 10.9568 221.44-158.5664-21.6064-260.8128-148.992-270.6944-273.1008-10.3424-129.8944 34.7648-192.4096 166.912-303.4624 92.5696-77.824 140.9024-159.9488 162.8672-206.08 188.6208 132.4544 143.9744 238.1312 113.9712 309.1968-2.2016 5.1712-4.2496 10.0864-6.144 14.7456a30.76096 30.76096 0 0 0 8.96 35.2256c10.3424 8.5504 25.0368 9.3184 36.3008 2.048 49.2544-32.0512 71.2704-53.9648 104.3456-91.904 79.7184 101.12 107.6224 196.0448 82.944 282.5728z" fill="#474A54" ></path><path d="M429.4144 330.496c-0.5632 0.512-57.8048 53.4016-117.1968 107.6224-65.536 59.8016-105.8304 187.2896-58.9824 274.5856a30.63296 30.63296 0 0 0 27.0848 16.1792c4.9152 0 9.8816-1.1776 14.4896-3.6352 14.9504-8.0384 20.5312-26.6752 12.544-41.6256-29.2352-54.4768-6.7584-151.7056 46.2848-200.1408C413.1328 429.1584 470.528 376.1664 471.0912 375.6032a30.78656 30.78656 0 0 0 1.7408-43.4176 30.74048 30.74048 0 0 0-43.4176-1.6896z" fill="#474A54" ></path></symbol><symbol id="icon-label" viewBox="0 0 1024 1024"><path d="M943.45 208.26L815.74 80.55a56.508 56.508 0 0 0-44.89-16.33L560.48 82.68a56.478 56.478 0 0 0-35.01 16.33L80.55 543.93c-22.07 22.07-22.07 57.84 0 79.9l319.62 319.62c22.07 22.07 57.84 22.07 79.9 0l444.92-444.92a56.503 56.503 0 0 0 16.33-35.01l18.46-210.37a56.508 56.508 0 0 0-16.33-44.89z" fill="#8C9EFF" ></path><path d="M739.76 284.24m-84 0a84 84 0 1 0 168 0 84 84 0 1 0-168 0Z" fill="#FFFFFF" ></path><path d="M440.04 792m-28 0a28 28 0 1 0 56 0 28 28 0 1 0-56 0Z" fill="#FFD600" ></path></symbol><symbol id="icon-browse" viewBox="0 0 1024 1024"><path d="M997 435.6c-28.2-36.7-65.4-81.4-107.4-122.2-54.6-53.2-110.5-95.6-166.1-126.3-71.2-39.2-142-59.1-210.7-59.1s-139.6 19.9-210.7 59.1c-55.5 30.7-111.4 73.1-166.1 126.3-42 40.8-79.3 85.5-107.5 122.1-34.8 45.3-34.8 107.8 0 153.1 28.2 36.7 65.4 81.4 107.4 122.2C190.5 764 246.5 806.4 302 837.1c71.2 39.2 142.1 59.1 210.7 59.1 68.7 0 139.6-19.9 210.8-59 55.5-30.7 111.4-73.1 166.1-126.3 42-40.8 79.3-85.6 107.4-122.2 34.8-45.3 34.8-107.8 0-153.1z m-37.3 99c-66.2 89-243.8 299-446.8 299-57.5 0-117.7-17.1-179-50.8-50.5-27.7-101.7-66.6-152.2-115.6-51.1-49.5-91-99.5-115.7-132.6-10-13.5-10-31.6 0-44.9 66.1-89 243.7-299 446.8-299 57.5 0 117.6 17.1 179 50.8 50.5 27.7 101.7 66.6 152.2 115.6 51.1 49.5 91 99.5 115.7 132.6 9.9 13.4 9.9 31.6 0 44.9z" ></path><path d="M512 321.7c-105.7 0-191.6 86-191.6 191.6 0 105.7 86 191.6 191.6 191.6s191.6-86 191.6-191.6c0-105.7-86-191.6-191.6-191.6z m0 319.2c-70.3 0-127.6-57.2-127.6-127.6S441.7 385.7 512 385.7s127.6 57.2 127.6 127.6S582.3 640.9 512 640.9z" ></path></symbol><symbol id="icon-like" viewBox="0 0 1024 1024"><path d="M598.354747 67.542626c-48.148687 0-90.130101 32.905051-98.960808 79.437576 0 0-14.312727 72.882424-21.798787 99.090101-12.308687 43.196768-55.363232 90.944646-86.522829 106.188283-23.531313 11.636364-110.99798 11.765657-116.350707 11.765656H155.707475c-32.762828 0-59.384242 26.479192-59.384243 59.384243v475.022222c0 32.762828 26.479192 59.384242 59.384243 59.384242h548.033939c88.126061 0 163.025455-64.452525 176.135758-151.647676l45.873131-305.713132c10.834747-71.809293-44.8-136.274747-117.423838-136.274747H673.254141s20.066263-66.469495 30.228687-178.669899c5.081212-56.837172-35.167677-110.99798-94.280404-117.152323-3.620202-0.54303-7.227475-0.814545-10.847677-0.814546zM333.705051 898.288485V421.533737c38.917172-2.534141 66.999596-8.016162 83.574949-16.316767 43.726869-21.669495 99.633131-81.040808 117.281616-143.088485 7.899798-27.681616 21.39798-96.155152 23.001212-104.184243 3.47798-17.92 20.596364-31.159596 40.649697-31.159596 1.603232 0 3.206465 0.129293 4.822627 0.271516 28.211717 2.947879 43.326061 29.698586 41.32202 52.686868-9.360808 103.912727-27.823838 166.503434-28.082425 166.904243l-23.130505 76.489697h215.182223c17.519192 0 33.564444 7.356768 45.071515 20.596363 11.507071 13.239596 16.316768 30.228687 13.640404 47.618586L821.294545 797.052121c-8.830707 58.569697-58.181818 101.094141-117.423838 101.094142h-370.165656v0.142222z m-177.997576 0v-475.022222h118.626262v475.022222H155.707475z m0 0" ></path></symbol></svg>',i=(i=document.getElementsByTagName("script"))[i.length-1].getAttribute("data-injectcss"),d=function(l,a){a.parentNode.insertBefore(l,a)};if(i&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(l){console&&console.log(l)}}function z(){p||(p=!0,t())}function M(){try{c.documentElement.doScroll("left")}catch(l){return void setTimeout(M,50)}z()}a=function(){var l,a;(a=document.createElement("div")).innerHTML=F,F=null,(l=a.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",a=l,(l=document.body).firstChild?d(a,l.firstChild):l.appendChild(a))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(a,0):(h=function(){document.removeEventListener("DOMContentLoaded",h,!1),a()},document.addEventListener("DOMContentLoaded",h,!1)):document.attachEvent&&(t=a,c=l.document,p=!1,M(),c.onreadystatechange=function(){"complete"==c.readyState&&(c.onreadystatechange=null,z())})}(window); | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
rf-blog/code/client/src/utils/request.js
0 → 100644
1 | +import axios from 'axios'; | ||
2 | +import qs from 'qs'; | ||
3 | +import { Message } from 'element-ui'; | ||
4 | + | ||
5 | +axios.defaults.withCredentials = true; | ||
6 | + | ||
7 | +// 发送时 | ||
8 | +axios.interceptors.request.use( | ||
9 | + (config) => config, | ||
10 | + (err) => Promise.reject(err) | ||
11 | +); | ||
12 | + | ||
13 | +// 响应时 | ||
14 | +axios.interceptors.response.use( | ||
15 | + (response) => response, | ||
16 | + (err) => Promise.resolve(err.response) | ||
17 | +); | ||
18 | + | ||
19 | +// 检查状态码 | ||
20 | +function checkStatus(res) { | ||
21 | + // console.log("log status =>", res); | ||
22 | + if (res.status === 200 || res.status === 304) { | ||
23 | + return res.data; | ||
24 | + } | ||
25 | + return { | ||
26 | + code: 0, | ||
27 | + msg: res.data.msg || res.statusText, | ||
28 | + data: res.statusText, | ||
29 | + }; | ||
30 | +} | ||
31 | + | ||
32 | +// 检查CODE值 | ||
33 | +function checkCode(res) { | ||
34 | + // console.log("log code =>", res); | ||
35 | + if (res.code === 0) { | ||
36 | + Message({ | ||
37 | + message: res.msg, | ||
38 | + type: 'error', | ||
39 | + duration: 2 * 1000, | ||
40 | + }); | ||
41 | + throw new Error(res.msg); | ||
42 | + } | ||
43 | + return res; | ||
44 | +} | ||
45 | + | ||
46 | +const prefix = '/client_api'; | ||
47 | +export default { | ||
48 | + get(url, params) { | ||
49 | + if (!url) return; | ||
50 | + return axios({ | ||
51 | + method: 'get', | ||
52 | + url: prefix + url, | ||
53 | + params, | ||
54 | + timeout: 30000, | ||
55 | + }) | ||
56 | + .then(checkStatus) | ||
57 | + .then(checkCode); | ||
58 | + }, | ||
59 | + post(url, data) { | ||
60 | + if (!url) return; | ||
61 | + return axios({ | ||
62 | + method: 'post', | ||
63 | + url: prefix + url, | ||
64 | + data: qs.stringify(data), | ||
65 | + timeout: 30000, | ||
66 | + }) | ||
67 | + .then(checkStatus) | ||
68 | + .then(checkCode); | ||
69 | + }, | ||
70 | +}; |
1 | +<template> | ||
2 | + <div class="detail-content" v-loading="loading"> | ||
3 | + <div class="detail-body"> | ||
4 | + <div class="detail-title">{{ blogInfo.title }}</div> | ||
5 | + <div class="detail-func"> | ||
6 | + <div class="func-icon"> | ||
7 | + <Icon name="icon-date02"></Icon> | ||
8 | + <div class="box-text"> | ||
9 | + {{ blogInfo.releaseTime | formatTime("yyyy-MM-dd") }} | ||
10 | + </div> | ||
11 | + </div> | ||
12 | + <div class="func-icon"> | ||
13 | + <Icon name="icon-browse02"></Icon> | ||
14 | + <div class="box-text">{{ blogInfo.pv | formatNumber() }}</div> | ||
15 | + </div> | ||
16 | + <div class="func-icon" v-if="blogInfo.auth"> | ||
17 | + <Icon name="icon-laborer"></Icon> | ||
18 | + <div class="box-text"> | ||
19 | + {{ blogInfo.auth }} | ||
20 | + </div> | ||
21 | + </div> | ||
22 | + </div> | ||
23 | + <div class="detail-main fmt" v-html="blogHtml"></div> | ||
24 | + <div class="detail-label"> | ||
25 | + 标签: | ||
26 | + <div | ||
27 | + class="box-text label-text" | ||
28 | + :style="{ backgroundColor: getLabelColor(label) }" | ||
29 | + v-for="label in blogInfo.type" | ||
30 | + @click="$router.push(`/label/${label}`)" | ||
31 | + :key="label" | ||
32 | + > | ||
33 | + {{ label }} | ||
34 | + </div> | ||
35 | + </div> | ||
36 | + <div class="detail-page" v-if="count > 2"> | ||
37 | + <div class="page-common page-pre" @click="goto(preInfo._id)"> | ||
38 | + 上一篇 <span> {{ preInfo.title }}</span> | ||
39 | + </div> | ||
40 | + <div class="page-common page-next" @click="goto(nextInfo._id)"> | ||
41 | + <span>{{ nextInfo.title }}</span | ||
42 | + > 下一篇 | ||
43 | + </div> | ||
44 | + </div> | ||
45 | + </div> | ||
46 | + </div> | ||
47 | +</template> | ||
48 | + | ||
49 | +<script> | ||
50 | +import { apiGetBlogList, apiUpdatePV } from "api/blog"; | ||
51 | +import label from "src/mixins/label"; | ||
52 | +export default { | ||
53 | + name: "detailContent", | ||
54 | + mixins: [label], | ||
55 | + components: {}, | ||
56 | + props: {}, | ||
57 | + computed: {}, | ||
58 | + data() { | ||
59 | + return { | ||
60 | + loading: false, | ||
61 | + blogHtml: "", | ||
62 | + id: "", | ||
63 | + blogInfo: {}, | ||
64 | + preInfo: {}, | ||
65 | + nextInfo: {}, | ||
66 | + query: {}, | ||
67 | + pageindex: 1, | ||
68 | + pagesize: 8, | ||
69 | + currentIndex: 0, | ||
70 | + count: 0, | ||
71 | + }; | ||
72 | + }, | ||
73 | + watch: { | ||
74 | + $route: { | ||
75 | + handler(to, from) { | ||
76 | + this.id = to.params.id; | ||
77 | + this.query = to.query; | ||
78 | + this.updatePV(); | ||
79 | + this.getBlogList(); | ||
80 | + }, | ||
81 | + deep: true, | ||
82 | + immediate: true, | ||
83 | + }, | ||
84 | + }, | ||
85 | + created() {}, | ||
86 | + mounted() {}, | ||
87 | + beforeDestroy() {}, | ||
88 | + methods: { | ||
89 | + goto(id) { | ||
90 | + this.$router.push({ path: `/article/detail/${id}`, query: this.query }); | ||
91 | + }, | ||
92 | + getBlogList() { | ||
93 | + this.loading = true; | ||
94 | + return apiGetBlogList(this.query) | ||
95 | + .then((res) => { | ||
96 | + let { list } = res.data; | ||
97 | + this.count = list.length; | ||
98 | + this.blogInfo = list.filter((item, index) => { | ||
99 | + if (item._id === this.id) { | ||
100 | + this.currentIndex = index; | ||
101 | + return item; | ||
102 | + } | ||
103 | + })[0]; | ||
104 | + this.blogHtml = this.blogInfo.html.replace( | ||
105 | + /<a /gi, | ||
106 | + `<a target='_blank'` | ||
107 | + ); | ||
108 | + let preIndex = !this.currentIndex | ||
109 | + ? list.length - 1 | ||
110 | + : this.currentIndex - 1; | ||
111 | + let nextIndex = | ||
112 | + this.currentIndex === list.length - 1 ? 0 : this.currentIndex + 1; | ||
113 | + this.preInfo = list[preIndex]; | ||
114 | + this.nextInfo = list[nextIndex]; | ||
115 | + }) | ||
116 | + .catch((err) => { | ||
117 | + console.log(err); | ||
118 | + }) | ||
119 | + .finally(() => { | ||
120 | + this.loading = false; | ||
121 | + }); | ||
122 | + }, | ||
123 | + updatePV() { | ||
124 | + return apiUpdatePV({ _id: this.id }) | ||
125 | + .then((res) => {}) | ||
126 | + .catch((err) => { | ||
127 | + console.log(err); | ||
128 | + }) | ||
129 | + .finally(() => {}); | ||
130 | + }, | ||
131 | + }, | ||
132 | +}; | ||
133 | +</script> | ||
134 | + | ||
135 | +<style lang="less" scoped> | ||
136 | +.detail-content { | ||
137 | + width: 70%; | ||
138 | + background-color: #fff; | ||
139 | + margin-top: 20px; | ||
140 | + padding: 24px; | ||
141 | + .detail-body { | ||
142 | + .detail-title { | ||
143 | + display: block; | ||
144 | + font-size: 24px; | ||
145 | + font-weight: bold; | ||
146 | + text-align: center; | ||
147 | + color: rgb(51, 51, 51); | ||
148 | + } | ||
149 | + .detail-func { | ||
150 | + display: flex; | ||
151 | + justify-content: center; | ||
152 | + align-items: center; | ||
153 | + padding: 20px 0 30px; | ||
154 | + position: relative; | ||
155 | + &::after { | ||
156 | + content: ""; | ||
157 | + height: 1px; | ||
158 | + width: 100%; | ||
159 | + background-color: @cuttingLineColor; | ||
160 | + position: absolute; | ||
161 | + bottom: 20px; | ||
162 | + } | ||
163 | + | ||
164 | + .func-icon { | ||
165 | + color: @assistColor; | ||
166 | + display: flex; | ||
167 | + align-items: center; | ||
168 | + margin-right: 24px; | ||
169 | + .box-text { | ||
170 | + padding-left: 6px; | ||
171 | + position: relative; | ||
172 | + top: 1px; | ||
173 | + } | ||
174 | + } | ||
175 | + } | ||
176 | + .detail-main { | ||
177 | + margin-bottom: 50px; | ||
178 | + } | ||
179 | + .detail-label { | ||
180 | + display: flex; | ||
181 | + align-items: center; | ||
182 | + margin-bottom: 24px; | ||
183 | + color: @assistColor; | ||
184 | + svg { | ||
185 | + font-size: 18px; | ||
186 | + } | ||
187 | + .box-text { | ||
188 | + padding-left: 6px; | ||
189 | + position: relative; | ||
190 | + top: 2px; | ||
191 | + } | ||
192 | + .label-text { | ||
193 | + padding: 4px 10px; | ||
194 | + color: #fff; | ||
195 | + margin-left: 8px; | ||
196 | + border-radius: 12px; | ||
197 | + font-size: 14px; | ||
198 | + top: 0; | ||
199 | + cursor: pointer; | ||
200 | + &:hover { | ||
201 | + border-radius: 0; | ||
202 | + transition: 1s ease all; | ||
203 | + } | ||
204 | + } | ||
205 | + } | ||
206 | + .detail-page { | ||
207 | + display: flex; | ||
208 | + align-items: center; | ||
209 | + padding-top: 24px; | ||
210 | + position: relative; | ||
211 | + &::before { | ||
212 | + content: ""; | ||
213 | + height: 1px; | ||
214 | + width: 100%; | ||
215 | + background-color: @cuttingLineColor; | ||
216 | + position: absolute; | ||
217 | + top: 0; | ||
218 | + } | ||
219 | + .page-common { | ||
220 | + color: @assistColor; | ||
221 | + position: relative; | ||
222 | + cursor: pointer; | ||
223 | + display: flex; | ||
224 | + align-items: center; | ||
225 | + span { | ||
226 | + color: @mainColor; | ||
227 | + font-weight: bold; | ||
228 | + font-size: 20px; | ||
229 | + max-width: 220px; | ||
230 | + overflow: hidden; | ||
231 | + text-overflow: ellipsis; | ||
232 | + display: -webkit-box; | ||
233 | + -webkit-line-clamp: 1; | ||
234 | + -webkit-box-orient: vertical; | ||
235 | + } | ||
236 | + } | ||
237 | + .page-pre { | ||
238 | + padding-left: 16px; | ||
239 | + flex: 1; | ||
240 | + &::before { | ||
241 | + content: ""; | ||
242 | + width: 10px; | ||
243 | + height: 10px; | ||
244 | + border-left: 1px solid @assistColor; | ||
245 | + border-bottom: 1px solid @assistColor; | ||
246 | + transform: rotate(45deg); | ||
247 | + position: absolute; | ||
248 | + top: 3px; | ||
249 | + left: 0; | ||
250 | + } | ||
251 | + } | ||
252 | + .page-next { | ||
253 | + text-align: right; | ||
254 | + padding-right: 16px; | ||
255 | + &::after { | ||
256 | + content: ""; | ||
257 | + width: 10px; | ||
258 | + height: 10px; | ||
259 | + border-right: 1px solid @assistColor; | ||
260 | + border-top: 1px solid @assistColor; | ||
261 | + transform: rotate(45deg); | ||
262 | + position: absolute; | ||
263 | + top: 3px; | ||
264 | + right: 0; | ||
265 | + } | ||
266 | + } | ||
267 | + } | ||
268 | + } | ||
269 | +} | ||
270 | +</style> |
1 | +<template> | ||
2 | + <div class="home-wrapper"> | ||
3 | + <div class="home-body"> | ||
4 | + <router-view></router-view> | ||
5 | + <div class="side-wrapper"> | ||
6 | + <side-article :sideClassify="BROWSE_STATUS"></side-article> | ||
7 | + <side-article | ||
8 | + :sideClassify="RECOMMEND_STATUS" | ||
9 | + :class="{ 'side-sticky': showSide && showSticky }" | ||
10 | + ></side-article> | ||
11 | + <label-classify | ||
12 | + :class="[showSide && showSticky ? 'label-sticky' : 'side-sticky']" | ||
13 | + ></label-classify> | ||
14 | + </div> | ||
15 | + </div> | ||
16 | + </div> | ||
17 | +</template> | ||
18 | + | ||
19 | +<script> | ||
20 | +import SideArticle from "components/sideArticle"; | ||
21 | +import { BROWSE_STATUS, RECOMMEND_STATUS } from "src/constant/side"; | ||
22 | +import DetailContent from "./components/detailContent"; | ||
23 | +import LabelClassify from "components/labelClassify"; | ||
24 | +export default { | ||
25 | + name: "labelComponent", | ||
26 | + components: { | ||
27 | + SideArticle, | ||
28 | + DetailContent, | ||
29 | + LabelClassify, | ||
30 | + }, | ||
31 | + props: {}, | ||
32 | + computed: {}, | ||
33 | + data() { | ||
34 | + return { | ||
35 | + BROWSE_STATUS, | ||
36 | + RECOMMEND_STATUS, | ||
37 | + scrollTop: 0, | ||
38 | + showSticky: false, | ||
39 | + showSide: true, | ||
40 | + }; | ||
41 | + }, | ||
42 | + watch: {}, | ||
43 | + created() { }, | ||
44 | + mounted() { | ||
45 | + const clientHeight = document.documentElement.clientHeight; | ||
46 | + this.showSide = clientHeight > 840; // 840 = 665 + 170(label分类高度) + 之间间距 | ||
47 | + window.addEventListener("scroll", this.handleScroll); | ||
48 | + }, | ||
49 | + beforeDestroy() { | ||
50 | + window.removeEventListener("scroll", this.handleScroll); | ||
51 | + }, | ||
52 | + methods: { | ||
53 | + handleScroll() { | ||
54 | + this.scrollTop = | ||
55 | + document.documentElement.scrollTop || document.body.scrollTop; | ||
56 | + this.showSticky = this.scrollTop > 665; // 665是一个side-article组件的高度 | ||
57 | + }, | ||
58 | + }, | ||
59 | +}; | ||
60 | +</script> | ||
61 | + | ||
62 | +<style lang="less" scoped> | ||
63 | +.side-sticky { | ||
64 | + position: sticky; | ||
65 | + top: 0; | ||
66 | +} | ||
67 | +.label-sticky { | ||
68 | + position: sticky; | ||
69 | + top: 665px; | ||
70 | +} | ||
71 | +</style> |
1 | +<template> | ||
2 | + <div class="blog-wrapper" v-loading="loading"> | ||
3 | + <div class="blog-list" v-if="total > 0"> | ||
4 | + <div v-for="item in blogList" :key="item._id" class="list-item"> | ||
5 | + <div class="item-content"> | ||
6 | + <div class="item-img"> | ||
7 | + <img v-lazy="item.fileCoverImgUrl" @click="goto(item._id)" /> | ||
8 | + </div> | ||
9 | + <div class="content-box"> | ||
10 | + <div class="content-title" @click="goto(item._id)"> | ||
11 | + {{ item.title }} | ||
12 | + </div> | ||
13 | + <div class="content-desc"> | ||
14 | + {{ item.desc }} | ||
15 | + </div> | ||
16 | + </div> | ||
17 | + </div> | ||
18 | + <div class="item-footer"> | ||
19 | + <div class="item-func"> | ||
20 | + <div class="func-box"> | ||
21 | + <Icon name="icon-date02"></Icon> | ||
22 | + <div class="box-text"> | ||
23 | + {{ item.releaseTime | formatTime("yyyy-MM-dd") }} | ||
24 | + </div> | ||
25 | + </div> | ||
26 | + <div | ||
27 | + class="func-box likes" | ||
28 | + :class="{ 'icon-likes': getLikesColor(item._id) }" | ||
29 | + @click="handleLikes(item._id)" | ||
30 | + > | ||
31 | + <Icon name="icon-like02"></Icon> | ||
32 | + <div class="box-text"> | ||
33 | + {{ getLikesNumber(item._id, item.likes) | formatNumber() }} | ||
34 | + </div> | ||
35 | + </div> | ||
36 | + <div class="func-box"> | ||
37 | + <Icon name="icon-browse02"></Icon> | ||
38 | + <div class="box-text">{{ item.pv | formatNumber() }}</div> | ||
39 | + </div> | ||
40 | + <div class="func-box"> | ||
41 | + <Icon name="icon-label01"></Icon> | ||
42 | + <div | ||
43 | + class="box-text label-text" | ||
44 | + :style="{ backgroundColor: getLabelColor(label) }" | ||
45 | + v-for="label in item.type" | ||
46 | + @click="$router.push(`/label/${label}`)" | ||
47 | + :key="label" | ||
48 | + > | ||
49 | + {{ label }} | ||
50 | + </div> | ||
51 | + </div> | ||
52 | + </div> | ||
53 | + <div class="item-read" @click="goto(item._id)">阅读全文>></div> | ||
54 | + </div> | ||
55 | + </div> | ||
56 | + </div> | ||
57 | + <NoneData v-else-if="!total"></NoneData> | ||
58 | + | ||
59 | + <Paging | ||
60 | + :page-index="pageindex" | ||
61 | + :total="total" | ||
62 | + :page-size="pagesize" | ||
63 | + @change="pageChange" | ||
64 | + ></Paging> | ||
65 | + </div> | ||
66 | +</template> | ||
67 | +<script> | ||
68 | +import { apiGetBlogList } from "api/blog"; | ||
69 | +import like from "src/mixins/like"; | ||
70 | +import label from "src/mixins/label"; | ||
71 | +export default { | ||
72 | + mixins: [like, label], | ||
73 | + data() { | ||
74 | + return { | ||
75 | + loading: false, | ||
76 | + blogList: [], | ||
77 | + pageindex: 1, | ||
78 | + pagesize: 8, | ||
79 | + total: -1, | ||
80 | + }; | ||
81 | + }, | ||
82 | + computed: {}, | ||
83 | + watch: {}, | ||
84 | + created() { | ||
85 | + this.getBlogList(); | ||
86 | + }, | ||
87 | + mounted() { | ||
88 | + }, | ||
89 | + methods: { | ||
90 | + goto(id) { | ||
91 | + this.$router.push({ | ||
92 | + path: `/article/detail/${id}`, | ||
93 | + query: { | ||
94 | + pageindex: this.pageindex, | ||
95 | + pagesize: this.pagesize, | ||
96 | + }, | ||
97 | + }); | ||
98 | + }, | ||
99 | + pageChange(page) { | ||
100 | + this.pageindex = page; | ||
101 | + document.documentElement.scrollTop = document.body.scrollTop = 0; | ||
102 | + this.getBlogList(); | ||
103 | + }, | ||
104 | + getBlogList() { | ||
105 | + let params = { | ||
106 | + pageindex: this.pageindex, | ||
107 | + pagesize: this.pagesize, | ||
108 | + }; | ||
109 | + this.loading = true; | ||
110 | + return apiGetBlogList(params) | ||
111 | + .then((res) => { | ||
112 | + let { list, total } = res.data; | ||
113 | + this.blogList = list; | ||
114 | + this.total = total; | ||
115 | + }) | ||
116 | + .catch((err) => { | ||
117 | + console.log(err); | ||
118 | + }) | ||
119 | + .finally(() => { | ||
120 | + this.loading = false; | ||
121 | + }); | ||
122 | + }, | ||
123 | + }, | ||
124 | +}; | ||
125 | +</script> | ||
126 | +<style lang="less" scoped> | ||
127 | +.blog-wrapper { | ||
128 | + width: 70%; | ||
129 | + margin-top: 20px; | ||
130 | + .blog-list { | ||
131 | + margin-bottom: 30px; | ||
132 | + | ||
133 | + .list-item { | ||
134 | + padding: 20px; | ||
135 | + border-radius: 12px; | ||
136 | + background-color: #fff; | ||
137 | + margin-bottom: 16px; | ||
138 | + position: relative; | ||
139 | + transition: box-shadow 0.4s; | ||
140 | + box-shadow: 0px 5px 15px 0px rgba(0, 0, 0, 0.08); | ||
141 | + &:hover { | ||
142 | + box-shadow: 5px 15px 30px 5px rgba(0, 0, 0, 0.15); | ||
143 | + } | ||
144 | + &:hover .item-content .content-box .content-title { | ||
145 | + color: green; | ||
146 | + } | ||
147 | + &:hover img { | ||
148 | + transform: scale(1.2); | ||
149 | + } | ||
150 | + .item-content { | ||
151 | + display: flex; | ||
152 | + align-items: flex-start; | ||
153 | + .item-img { | ||
154 | + width: 240px; | ||
155 | + height: 160px; | ||
156 | + margin-right: 16px; | ||
157 | + overflow: hidden; | ||
158 | + img { | ||
159 | + width: 100%; | ||
160 | + border-radius: 6px; | ||
161 | + height: 100%; | ||
162 | + object-fit: cover; | ||
163 | + cursor: pointer; | ||
164 | + transition: all 0.4s linear; | ||
165 | + } | ||
166 | + } | ||
167 | + .content-box { | ||
168 | + flex: 1; | ||
169 | + .content-title { | ||
170 | + color: @thinColor; | ||
171 | + font-size: 24px; | ||
172 | + font-weight: bold; | ||
173 | + margin-bottom: 10px; | ||
174 | + &:hover { | ||
175 | + cursor: pointer; | ||
176 | + } | ||
177 | + .ellipsis-line-clamp(); | ||
178 | + } | ||
179 | + .content-desc { | ||
180 | + color: @assistColor; | ||
181 | + line-height: 28px; | ||
182 | + .ellipsis-line-clamp(4); | ||
183 | + } | ||
184 | + } | ||
185 | + } | ||
186 | + | ||
187 | + .item-footer { | ||
188 | + display: flex; | ||
189 | + justify-content: space-between; | ||
190 | + align-items: center; | ||
191 | + margin-top: 24px; | ||
192 | + .item-func { | ||
193 | + display: flex; | ||
194 | + align-items: center; | ||
195 | + .func-box { | ||
196 | + display: flex; | ||
197 | + align-items: center; | ||
198 | + padding-right: 24px; | ||
199 | + color: @assistColor; | ||
200 | + svg { | ||
201 | + font-size: 18px; | ||
202 | + } | ||
203 | + .box-text { | ||
204 | + padding-left: 6px; | ||
205 | + position: relative; | ||
206 | + top: 2px; | ||
207 | + } | ||
208 | + .label-text { | ||
209 | + padding: 4px 10px; | ||
210 | + color: #fff; | ||
211 | + margin-left: 8px; | ||
212 | + border-radius: 12px; | ||
213 | + font-size: 14px; | ||
214 | + top: 0; | ||
215 | + cursor: pointer; | ||
216 | + &:hover { | ||
217 | + border-radius: 0; | ||
218 | + transition: 1s ease all; | ||
219 | + } | ||
220 | + } | ||
221 | + } | ||
222 | + .likes { | ||
223 | + &:hover { | ||
224 | + cursor: pointer; | ||
225 | + } | ||
226 | + } | ||
227 | + .icon-likes { | ||
228 | + color: #dfa400; | ||
229 | + } | ||
230 | + } | ||
231 | + .item-read { | ||
232 | + color: @thinHighlightColor; | ||
233 | + &:hover { | ||
234 | + cursor: pointer; | ||
235 | + } | ||
236 | + } | ||
237 | + } | ||
238 | + } | ||
239 | + } | ||
240 | +} | ||
241 | +</style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<template> | ||
2 | + <div class="blog-classify" v-loading="loading"> | ||
3 | + <div class="list-title"> | ||
4 | + <Icon name="icon-label01"></Icon> | ||
5 | + <span v-html="getTitle"></span> | ||
6 | + </div> | ||
7 | + | ||
8 | + <div class="blog-list" v-if="total > 0"> | ||
9 | + <div class="list-item" v-for="item in blogList" :key="item._id"> | ||
10 | + <div class="item-img"> | ||
11 | + <img v-lazy="item.fileCoverImgUrl" @click="goto(item._id)" /> | ||
12 | + </div> | ||
13 | + <div class="item-title" v-html="getKeywordHighlight(item.title)"></div> | ||
14 | + <div class="item-desc" v-html="getKeywordHighlight(item.desc)"></div> | ||
15 | + <div class="item-label"> | ||
16 | + <div class="label-title">标签:</div> | ||
17 | + <div class="label-box"> | ||
18 | + <div | ||
19 | + class="box-text label-text" | ||
20 | + :style="{ backgroundColor: getLabelColor(label) }" | ||
21 | + v-for="label in item.type" | ||
22 | + @click="$router.push(`/label/${label}`)" | ||
23 | + :key="label" | ||
24 | + > | ||
25 | + {{ label }} | ||
26 | + </div> | ||
27 | + </div> | ||
28 | + </div> | ||
29 | + <div class="item-footer"> | ||
30 | + <div class="footer-text" @click="goto(item._id)">+ 文章阅读</div> | ||
31 | + <div class="footer-box"> | ||
32 | + <div | ||
33 | + class="footer-icon likes" | ||
34 | + @click="handleLikes(item._id)" | ||
35 | + :class="{ 'icon-likes': getLikesColor(item._id) }" | ||
36 | + > | ||
37 | + <Icon name="icon-like02"></Icon> | ||
38 | + <div class="box-text"> | ||
39 | + {{ getLikesNumber(item._id, item.likes) | formatNumber() }} | ||
40 | + </div> | ||
41 | + </div> | ||
42 | + <div class="footer-icon"> | ||
43 | + <Icon name="icon-browse02"></Icon> | ||
44 | + <div class="box-text">{{ item.pv | formatNumber() }}</div> | ||
45 | + </div> | ||
46 | + </div> | ||
47 | + </div> | ||
48 | + </div> | ||
49 | + </div> | ||
50 | + <NoneData v-else-if="!total"></NoneData> | ||
51 | + | ||
52 | + <Paging | ||
53 | + :page-index="pageindex" | ||
54 | + :total="total" | ||
55 | + :page-size="pagesize" | ||
56 | + @change="pageChange" | ||
57 | + ></Paging> | ||
58 | + </div> | ||
59 | +</template> | ||
60 | + | ||
61 | +<script> | ||
62 | +import { apiGetBlogList } from "api/blog"; | ||
63 | +import like from "src/mixins/like"; | ||
64 | +import label from "src/mixins/label"; | ||
65 | +export default { | ||
66 | + name: "blogClassify", | ||
67 | + components: {}, | ||
68 | + props: {}, | ||
69 | + mixins: [like, label], | ||
70 | + computed: { | ||
71 | + getTitle({ isQuery, keyword, total }) { | ||
72 | + return keyword | ||
73 | + ? `${isQuery ? "搜索关键词" : "标签分类"} | ||
74 | + “<font color="#f75353"> ${keyword} </font>” 的结果,共${total}篇` | ||
75 | + : `全部文章,共${total}篇`; | ||
76 | + }, | ||
77 | + // 当选择标签分类时,不展示高亮 | ||
78 | + getKeywordHighlight({ isQuery, keyword }) { | ||
79 | + return (value) => | ||
80 | + isQuery && value.includes(keyword) | ||
81 | + ? value.replace( | ||
82 | + new RegExp(keyword, "g"), | ||
83 | + `<font color="#f75353">${keyword}</font>` | ||
84 | + ) | ||
85 | + : value; | ||
86 | + }, | ||
87 | + }, | ||
88 | + data() { | ||
89 | + return { | ||
90 | + loading: false, | ||
91 | + blogList: [], | ||
92 | + pageindex: 1, | ||
93 | + pagesize: 6, | ||
94 | + total: -1, | ||
95 | + isQuery: "", // 用来区分是搜索框、标签搜索场景 | ||
96 | + keyword: "", | ||
97 | + }; | ||
98 | + }, | ||
99 | + watch: { | ||
100 | + $route: { | ||
101 | + handler(to, from) { | ||
102 | + this.isQuery = to.query.search; | ||
103 | + this.keyword = to.params.keyword; | ||
104 | + this.keyword = this.keyword === "all" ? "" : this.keyword; | ||
105 | + this.getBlogList(); | ||
106 | + }, | ||
107 | + deep: true, | ||
108 | + immediate: true, | ||
109 | + }, | ||
110 | + }, | ||
111 | + created() { | ||
112 | + document.documentElement.scrollTop = document.body.scrollTop = 0; | ||
113 | + }, | ||
114 | + mounted() { }, | ||
115 | + beforeDestroy() { }, | ||
116 | + methods: { | ||
117 | + goto(id) { | ||
118 | + this.$router.push({ | ||
119 | + path: `/article/detail/${id}`, | ||
120 | + query: { | ||
121 | + keyword: this.keyword, | ||
122 | + pageindex: this.pageindex, | ||
123 | + pagesize: this.pagesize, | ||
124 | + }, | ||
125 | + }); | ||
126 | + }, | ||
127 | + pageChange(page) { | ||
128 | + this.pageindex = page; | ||
129 | + document.documentElement.scrollTop = document.body.scrollTop = 0; | ||
130 | + this.getBlogList(); | ||
131 | + }, | ||
132 | + getBlogList() { | ||
133 | + let params = { | ||
134 | + keyword: this.keyword, | ||
135 | + isQuery: this.isQuery, | ||
136 | + pageindex: this.pageindex, | ||
137 | + pagesize: this.pagesize, | ||
138 | + }; | ||
139 | + this.loading = true; | ||
140 | + return apiGetBlogList(params) | ||
141 | + .then((res) => { | ||
142 | + let { list, total } = res.data; | ||
143 | + this.blogList = list; | ||
144 | + this.total = total; | ||
145 | + }) | ||
146 | + .catch((err) => { | ||
147 | + console.log(err); | ||
148 | + }) | ||
149 | + .finally(() => { | ||
150 | + this.loading = false; | ||
151 | + }); | ||
152 | + }, | ||
153 | + }, | ||
154 | +}; | ||
155 | +</script> | ||
156 | + | ||
157 | +<style lang="less" scoped> | ||
158 | +.blog-classify { | ||
159 | + width: 70%; | ||
160 | + background-color: #fff; | ||
161 | + margin-top: 20px; | ||
162 | + padding-bottom: 30px; | ||
163 | + .list-title { | ||
164 | + color: @mainColor; | ||
165 | + border-bottom: 1px solid #e5e5e5; | ||
166 | + padding: 20px 10px; | ||
167 | + background-color: #f7f7f7; | ||
168 | + font-size: 18px; | ||
169 | + position: relative; | ||
170 | + &::after { | ||
171 | + content: " "; | ||
172 | + position: absolute; | ||
173 | + height: 2px; | ||
174 | + width: 4%; | ||
175 | + left: 0; | ||
176 | + bottom: -1px; | ||
177 | + background: @mainColor; | ||
178 | + transition: 2s ease all; | ||
179 | + } | ||
180 | + &:hover { | ||
181 | + &::after { | ||
182 | + width: 100%; | ||
183 | + } | ||
184 | + } | ||
185 | + span { | ||
186 | + margin-left: 6px; | ||
187 | + letter-spacing: 1px; | ||
188 | + } | ||
189 | + } | ||
190 | + .blog-list { | ||
191 | + display: flex; | ||
192 | + flex-wrap: wrap; | ||
193 | + padding: 20px 24px 40px; | ||
194 | + .list-item { | ||
195 | + width: 33.3%; | ||
196 | + height: 384px; | ||
197 | + padding: 20px; | ||
198 | + border-bottom: 1px solid #eee; | ||
199 | + border-left: 1px solid #eee; | ||
200 | + position: relative; | ||
201 | + | ||
202 | + transition: box-shadow 0.4s; | ||
203 | + box-shadow: 0px 5px 15px 0px rgba(0, 0, 0, 0.08); | ||
204 | + &:hover { | ||
205 | + box-shadow: 5px 15px 30px 5px rgba(0, 0, 0, 0.15); | ||
206 | + } | ||
207 | + &:hover img { | ||
208 | + transform: scale(1.2); | ||
209 | + } | ||
210 | + &:hover .item-footer .footer-text { | ||
211 | + color: green; | ||
212 | + } | ||
213 | + .item-img { | ||
214 | + height: 160px; | ||
215 | + overflow: hidden; | ||
216 | + cursor: pointer; | ||
217 | + img { | ||
218 | + width: 100%; | ||
219 | + height: 100%; | ||
220 | + object-fit: cover; | ||
221 | + cursor: pointer; | ||
222 | + border-radius: 4px; | ||
223 | + transition: all 0.5s ease; | ||
224 | + } | ||
225 | + } | ||
226 | + .item-title { | ||
227 | + display: block; | ||
228 | + width: 100%; | ||
229 | + color: @thinColor; | ||
230 | + line-height: 24px; | ||
231 | + margin: 14px 0 6px; | ||
232 | + font-weight: bold; | ||
233 | + overflow: hidden; | ||
234 | + text-overflow: ellipsis; | ||
235 | + white-space: nowrap; | ||
236 | + } | ||
237 | + .item-desc { | ||
238 | + color: @assistColor; | ||
239 | + line-height: 22px; | ||
240 | + font-size: 14px; | ||
241 | + .ellipsis-line-clamp(3); | ||
242 | + } | ||
243 | + .item-label { | ||
244 | + display: flex; | ||
245 | + align-items: center; | ||
246 | + position: absolute; | ||
247 | + max-width: 220px; | ||
248 | + bottom: 54px; | ||
249 | + color: @assistColor; | ||
250 | + .label-title { | ||
251 | + min-width: 48px; | ||
252 | + } | ||
253 | + .label-box { | ||
254 | + flex: 1; | ||
255 | + display: flex; | ||
256 | + overflow: hidden; | ||
257 | + text-overflow: ellipsis; | ||
258 | + white-space: nowrap; | ||
259 | + .box-text { | ||
260 | + padding-left: 6px; | ||
261 | + position: relative; | ||
262 | + top: 2px; | ||
263 | + } | ||
264 | + .label-text { | ||
265 | + padding: 4px 8px; | ||
266 | + color: #fff; | ||
267 | + margin-right: 8px; | ||
268 | + border-radius: 12px; | ||
269 | + font-size: 12px; | ||
270 | + top: 0; | ||
271 | + cursor: pointer; | ||
272 | + overflow: hidden; | ||
273 | + text-overflow: ellipsis; | ||
274 | + white-space: nowrap; | ||
275 | + &:last-child { | ||
276 | + margin-right: 0; | ||
277 | + } | ||
278 | + &:hover { | ||
279 | + border-radius: 0; | ||
280 | + transition: 1s ease all; | ||
281 | + } | ||
282 | + } | ||
283 | + } | ||
284 | + } | ||
285 | + .item-footer { | ||
286 | + display: flex; | ||
287 | + justify-content: space-between; | ||
288 | + align-items: center; | ||
289 | + position: absolute; | ||
290 | + left: 20px; | ||
291 | + bottom: 20px; | ||
292 | + width: 84%; | ||
293 | + .footer-text { | ||
294 | + color: @thinHighlightColor; | ||
295 | + cursor: pointer; | ||
296 | + } | ||
297 | + .footer-box { | ||
298 | + display: flex; | ||
299 | + align-items: center; | ||
300 | + .footer-icon { | ||
301 | + color: @assistColor; | ||
302 | + display: flex; | ||
303 | + align-items: center; | ||
304 | + margin-left: 24px; | ||
305 | + .box-text { | ||
306 | + padding-left: 6px; | ||
307 | + position: relative; | ||
308 | + top: 1px; | ||
309 | + } | ||
310 | + } | ||
311 | + .likes { | ||
312 | + cursor: pointer; | ||
313 | + } | ||
314 | + .icon-likes { | ||
315 | + color: #dfa400; | ||
316 | + } | ||
317 | + } | ||
318 | + } | ||
319 | + } | ||
320 | + } | ||
321 | +} | ||
322 | +</style> |
1 | +<template> | ||
2 | + <div class="intro-container"> | ||
3 | + <div class="intro-box"> | ||
4 | + <div class="intro-title">BLOG</div> | ||
5 | + <div class="intro-desc"> | ||
6 | + 个人博客 – 个人博客 | ||
7 | + </div> | ||
8 | + </div> | ||
9 | + <img src="../../../images/cloud-left.png" class="cloud-left" /> | ||
10 | + <img src="../../../images/cloud-right.png" class="cloud-right" /> | ||
11 | + <img src="../../../images/grass-confetti.png" class="grass-confetti" /> | ||
12 | + </div> | ||
13 | +</template> | ||
14 | + | ||
15 | +<script> | ||
16 | +export default { | ||
17 | + name: "bookCover", | ||
18 | + components: {}, | ||
19 | + props: {}, | ||
20 | + computed: {}, | ||
21 | + data() { | ||
22 | + return {}; | ||
23 | + }, | ||
24 | + watch: {}, | ||
25 | + created() { }, | ||
26 | + mounted() { }, | ||
27 | + beforeDestroy() { }, | ||
28 | + methods: {}, | ||
29 | +}; | ||
30 | +</script> | ||
31 | + | ||
32 | +<style lang="less" scoped> | ||
33 | +.intro-container { | ||
34 | + background: linear-gradient(to bottom, #c6dde4, #fefeff); | ||
35 | + position: relative; | ||
36 | + width: 100%; | ||
37 | + overflow: hidden; | ||
38 | + min-height: 240px; | ||
39 | + .intro-box { | ||
40 | + margin: 0; | ||
41 | + position: absolute; | ||
42 | + top: 50%; | ||
43 | + left: 50%; | ||
44 | + margin-right: -50%; | ||
45 | + transform: translate(-50%, -50%); | ||
46 | + text-align: center; | ||
47 | + z-index: 99; | ||
48 | + .intro-title { | ||
49 | + color: @thinColor; | ||
50 | + font-family: lato, sans-serif; | ||
51 | + font-size: 3.5em; | ||
52 | + letter-spacing: 10px; | ||
53 | + margin-top: 0; | ||
54 | + margin-bottom: 0; | ||
55 | + text-shadow: rgb(198, 221, 228) -1px -1px 1px, | ||
56 | + rgb(254, 254, 255) 1px 1px 1px; | ||
57 | + margin-bottom: 20px; | ||
58 | + } | ||
59 | + .intro-desc { | ||
60 | + color: @mainColor; | ||
61 | + font-size: 1em; | ||
62 | + font-weight: 400; | ||
63 | + padding: 0.2em 0; | ||
64 | + letter-spacing: 5px; | ||
65 | + text-transform: capitalize; | ||
66 | + margin-top: 0; | ||
67 | + margin-bottom: 0; | ||
68 | + text-shadow: rgb(198, 221, 228) -1px -1px 1px, | ||
69 | + rgb(254, 254, 255) 1px 1px 1px; | ||
70 | + } | ||
71 | + } | ||
72 | + img { | ||
73 | + position: absolute; | ||
74 | + bottom: 0; | ||
75 | + object-fit: contain; | ||
76 | + &.cloud-left { | ||
77 | + top: 0; | ||
78 | + left: 300px; | ||
79 | + } | ||
80 | + &.cloud-right { | ||
81 | + top: 0; | ||
82 | + right: 300px; | ||
83 | + } | ||
84 | + } | ||
85 | +} | ||
86 | +</style> |
rf-blog/code/client/src/views/home/index.vue
0 → 100644
1 | +<template> | ||
2 | + <div class="home-wrapper"> | ||
3 | + <intro></intro> | ||
4 | + <div class="home-body"> | ||
5 | + <blog></blog> | ||
6 | + <div class="side-wrapper"> | ||
7 | + <myself></myself> | ||
8 | + <search :isCache="true"></search> | ||
9 | + <label-classify></label-classify> | ||
10 | + <side-article :sideClassify="BROWSE_STATUS"></side-article> | ||
11 | + <side-article :sideClassify="RECOMMEND_STATUS"></side-article> | ||
12 | + </div> | ||
13 | + </div> | ||
14 | + </div> | ||
15 | +</template> | ||
16 | +<script> | ||
17 | +import Intro from "./components/intro"; | ||
18 | +import Blog from "./components/blog"; | ||
19 | +import Myself from "components/myself"; | ||
20 | +import Search from "components/search"; | ||
21 | +import LabelClassify from "components/labelClassify"; | ||
22 | +import SideArticle from "components/sideArticle"; | ||
23 | +import { BROWSE_STATUS, RECOMMEND_STATUS } from "src/constant/side"; | ||
24 | +export default { | ||
25 | + name: "indexComponent", | ||
26 | + components: { | ||
27 | + Intro, | ||
28 | + Blog, | ||
29 | + Myself, | ||
30 | + Search, | ||
31 | + LabelClassify, | ||
32 | + SideArticle, | ||
33 | + }, | ||
34 | + props: {}, | ||
35 | + computed: {}, | ||
36 | + data() { | ||
37 | + return { | ||
38 | + BROWSE_STATUS, | ||
39 | + RECOMMEND_STATUS, | ||
40 | + }; | ||
41 | + }, | ||
42 | + watch: {}, | ||
43 | + created() { }, | ||
44 | + mounted() { }, | ||
45 | + beforeDestroy() { }, | ||
46 | + methods: {}, | ||
47 | +}; | ||
48 | +</script> | ||
49 | +<style lang="less" scoped> | ||
50 | +</style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
rf-blog/code/client/src/views/home/label.vue
0 → 100644
1 | +<template> | ||
2 | + <div class="home-wrapper"> | ||
3 | + <div class="home-body"> | ||
4 | + <router-view> </router-view> | ||
5 | + <div class="side-wrapper"> | ||
6 | + <search></search> | ||
7 | + <label-classify></label-classify> | ||
8 | + <side-article :sideClassify="BROWSE_STATUS"></side-article> | ||
9 | + </div> | ||
10 | + </div> | ||
11 | + </div> | ||
12 | +</template> | ||
13 | + | ||
14 | +<script> | ||
15 | +import Search from "components/search"; | ||
16 | +import LabelClassify from "components/labelClassify"; | ||
17 | +import SideArticle from "components/sideArticle"; | ||
18 | +import { BROWSE_STATUS } from "src/constant/side"; | ||
19 | +export default { | ||
20 | + name: "labelComponent", | ||
21 | + components: { | ||
22 | + Search, | ||
23 | + LabelClassify, | ||
24 | + SideArticle, | ||
25 | + }, | ||
26 | + props: {}, | ||
27 | + computed: {}, | ||
28 | + data() { | ||
29 | + return { | ||
30 | + BROWSE_STATUS, | ||
31 | + }; | ||
32 | + }, | ||
33 | + watch: {}, | ||
34 | + created() {}, | ||
35 | + mounted() {}, | ||
36 | + beforeDestroy() {}, | ||
37 | + methods: {}, | ||
38 | +}; | ||
39 | +</script> | ||
40 | + | ||
41 | +<style lang="less" scoped> | ||
42 | +</style> |
1 | +<template> | ||
2 | + <div class="comment-editor" ref="container"> | ||
3 | + <div class="input-wrapper"> | ||
4 | + <input-box | ||
5 | + ref="inputBox" | ||
6 | + @keyup.enter.ctrl.exact.native="handlerSubmit" | ||
7 | + v-model="inputContent" | ||
8 | + placeholder="说点什么吧......" | ||
9 | + class="input-box" | ||
10 | + > | ||
11 | + </input-box> | ||
12 | + </div> | ||
13 | + <div class="footer-action"> | ||
14 | + <emoji-picker | ||
15 | + trigger-pick="click" | ||
16 | + @activated="$refs.inputBox.focus()" | ||
17 | + @selected="handlerEmojiSelected" | ||
18 | + ></emoji-picker> | ||
19 | + <input | ||
20 | + type="text" | ||
21 | + placeholder="你的昵称" | ||
22 | + v-model="nickname" | ||
23 | + maxlength="10" | ||
24 | + /> | ||
25 | + <span class="submit-tiptext">Ctrl + Enter</span> | ||
26 | + <div | ||
27 | + @click="handlerSubmit" | ||
28 | + class="submit-button" | ||
29 | + :disabled="!inputContent" | ||
30 | + > | ||
31 | + 提交 | ||
32 | + </div> | ||
33 | + </div> | ||
34 | + </div> | ||
35 | +</template> | ||
36 | +<script> | ||
37 | +import InputBox from "./inputBox"; | ||
38 | +import EmojiPicker from "./emojiPicker"; | ||
39 | +import { colorList } from "src/constant/headerColor"; | ||
40 | +export default { | ||
41 | + name: "comment-editor", | ||
42 | + components: { InputBox, EmojiPicker }, | ||
43 | + data() { | ||
44 | + return { | ||
45 | + inputContent: "", | ||
46 | + nickname: "", | ||
47 | + }; | ||
48 | + }, | ||
49 | + props: {}, | ||
50 | + computed: {}, | ||
51 | + destroyed() {}, | ||
52 | + mounted() {}, | ||
53 | + methods: { | ||
54 | + handlerSubmit() { | ||
55 | + let params = { | ||
56 | + content: this.inputContent, | ||
57 | + nickname: this.nickname, | ||
58 | + createTime: new Date().getTime() + "", | ||
59 | + headerColor: colorList[Math.floor(Math.random() * 7)], | ||
60 | + }; | ||
61 | + this.$emit("submit", params); | ||
62 | + }, | ||
63 | + handlerEmojiSelected(e) { | ||
64 | + this.$refs.inputBox.focus(); | ||
65 | + const clonedNode = e.target.cloneNode(true); | ||
66 | + clonedNode.style.verticalAlign = "text-top"; | ||
67 | + document.execCommand("insertHTML", false, clonedNode.outerHTML); | ||
68 | + }, | ||
69 | + handleReset() { | ||
70 | + this.$refs.inputBox.reset(); | ||
71 | + this.inputContent = ""; | ||
72 | + this.nickname = ""; | ||
73 | + }, | ||
74 | + }, | ||
75 | +}; | ||
76 | +</script> | ||
77 | + | ||
78 | +<style scoped lang="less"> | ||
79 | +.comment-editor { | ||
80 | + width: 100%; | ||
81 | + padding: 24px 20px; | ||
82 | + .input-wrapper { | ||
83 | + &.inline { | ||
84 | + display: flex; | ||
85 | + .input-box { | ||
86 | + flex: 1; | ||
87 | + margin-right: 14px; | ||
88 | + } | ||
89 | + } | ||
90 | + } | ||
91 | + .footer-action { | ||
92 | + margin-top: 10px; | ||
93 | + display: flex; | ||
94 | + align-items: center; | ||
95 | + input { | ||
96 | + margin-left: auto; | ||
97 | + margin-right: 24px; | ||
98 | + height: 32px; | ||
99 | + border: none; | ||
100 | + border: 1px solid @borderBoldColor; | ||
101 | + border-radius: 20px; | ||
102 | + padding-left: 12px; | ||
103 | + outline: none; | ||
104 | + &::placeholder { | ||
105 | + color: @borderBoldColor; | ||
106 | + } | ||
107 | + } | ||
108 | + .submit-tiptext { | ||
109 | + margin-right: 4px; | ||
110 | + font-size: 14px; | ||
111 | + color: @borderBoldColor; | ||
112 | + } | ||
113 | + .submit-button { | ||
114 | + align-self: flex-end; | ||
115 | + transition: all 0.2s; | ||
116 | + background: #409eff; | ||
117 | + border-radius: 4px; | ||
118 | + display: inline-block; | ||
119 | + cursor: pointer; | ||
120 | + padding: 6px 10px; | ||
121 | + color: white; | ||
122 | + user-select: none; | ||
123 | + &.button-enter, | ||
124 | + &.button-leave-to { | ||
125 | + // zoom:0; | ||
126 | + margin-left: -40px; | ||
127 | + transform: scale(0, 0); | ||
128 | + } | ||
129 | + &[disabled] { | ||
130 | + cursor: not-allowed; | ||
131 | + background: #66b1ff; | ||
132 | + } | ||
133 | + &:hover { | ||
134 | + background: #66b1ff; | ||
135 | + } | ||
136 | + &:not([disabled]):active { | ||
137 | + background: #3a8ee6; | ||
138 | + } | ||
139 | + } | ||
140 | + } | ||
141 | +} | ||
142 | +</style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<template> | ||
2 | + <div class="comment-main"> | ||
3 | + <div class="side-title"> | ||
4 | + <Icon name="icon-comment"></Icon> | ||
5 | + <span>{{ total }}</span | ||
6 | + >条评论, <span>{{ replyCount }}</span | ||
7 | + >条回复 | ||
8 | + </div> | ||
9 | + <div class="comment-item" v-for="item in commentList" :key="item._id"> | ||
10 | + <div class="comment-part"> | ||
11 | + <div class="item-img"> | ||
12 | + <Icon name="icon-user03" :style="{ color: item.headerColor }"></Icon> | ||
13 | + </div> | ||
14 | + <div class="item-box"> | ||
15 | + <div class="box-title"> | ||
16 | + {{ item.nickname }} | ||
17 | + <span>{{ item.createTime | formatTime("yyyy-MM-dd hh:mm") }}</span> | ||
18 | + </div> | ||
19 | + <div class="box-content" v-html="item.content"></div> | ||
20 | + <div class="item-icon"> | ||
21 | + <div | ||
22 | + class="box-icon" | ||
23 | + :class="{ 'icon-likes': getLikesColor(item._id) }" | ||
24 | + @click="handleLikes(item._id)" | ||
25 | + > | ||
26 | + <Icon name="icon-like02"></Icon> | ||
27 | + <span | ||
28 | + >{{ getLikesNumber(item._id, item.likes) | formatNumber() }} | ||
29 | + </span> | ||
30 | + </div> | ||
31 | + <div class="box-icon" @click="handleCilckReply(item)"> | ||
32 | + <Icon name="icon-reply02"></Icon> | ||
33 | + <span>{{ getReplyBox(item._id) ? "取消" : "回复" }}</span> | ||
34 | + </div> | ||
35 | + </div> | ||
36 | + | ||
37 | + <comment-editor | ||
38 | + v-show="getReplyBox(item._id)" | ||
39 | + ref="editor" | ||
40 | + @submit="handleReply" | ||
41 | + ></comment-editor> | ||
42 | + </div> | ||
43 | + </div> | ||
44 | + <template v-if="item.replyList && item.replyList.length"> | ||
45 | + <reply-item | ||
46 | + v-for="(reply, index) in item.replyList" | ||
47 | + :key="reply._id + index" | ||
48 | + :byReplyUser="reply.byReplyUser" | ||
49 | + :replyContent="reply.replyContent" | ||
50 | + :replyTime="reply.replyTime" | ||
51 | + :replyHeaderColor="reply.replyHeaderColor" | ||
52 | + :replyUser="reply.replyUser" | ||
53 | + ></reply-item> | ||
54 | + </template> | ||
55 | + </div> | ||
56 | + </div> | ||
57 | +</template> | ||
58 | + | ||
59 | +<script> | ||
60 | +import { apiUpdateLikes, apiUpdateReplys } from "api/message"; | ||
61 | +import CommentEditor from "./commentEditor"; | ||
62 | +import ReplyItem from "./replyItem"; | ||
63 | +import { colorList } from "src/constant/headerColor"; | ||
64 | +export default { | ||
65 | + name: "commentItem", | ||
66 | + components: { CommentEditor, ReplyItem }, | ||
67 | + props: { | ||
68 | + commentList: { | ||
69 | + type: Array, | ||
70 | + default: () => [], | ||
71 | + }, | ||
72 | + total: { | ||
73 | + type: Number, | ||
74 | + default: 0, | ||
75 | + }, | ||
76 | + replyCount: { | ||
77 | + type: Number, | ||
78 | + default: 0, | ||
79 | + }, | ||
80 | + }, | ||
81 | + computed: { | ||
82 | + getLikesNumber({ likeList }) { | ||
83 | + return (id, likes) => (likeList.includes(id) ? likes + 1 : likes); | ||
84 | + }, | ||
85 | + getLikesColor({ likeList }) { | ||
86 | + return (id) => likeList.includes(id); | ||
87 | + }, | ||
88 | + getReplyBox({ currentId, isReply }) { | ||
89 | + return (id) => currentId === id && isReply; | ||
90 | + }, | ||
91 | + }, | ||
92 | + data() { | ||
93 | + return { | ||
94 | + currentId: "", // 当前id | ||
95 | + byReplyUser: "", // 当前被回复用户 | ||
96 | + isLike: false, // 是否点赞 | ||
97 | + isReply: false, // 是否回复 | ||
98 | + likeList: [], | ||
99 | + }; | ||
100 | + }, | ||
101 | + watch: {}, | ||
102 | + created() {}, | ||
103 | + mounted() {}, | ||
104 | + beforeDestroy() {}, | ||
105 | + methods: { | ||
106 | + // 点赞 | ||
107 | + handleLikes(id) { | ||
108 | + if (this.likeList.includes(id)) { | ||
109 | + this.isLike = true; | ||
110 | + this.likeList.splice(this.likeList.indexOf(id), 1); | ||
111 | + } else { | ||
112 | + this.isLike = false; | ||
113 | + this.likeList.push(id); | ||
114 | + } | ||
115 | + this.currentId = id; | ||
116 | + return apiUpdateLikes({ _id: id, isLike: this.isLike }) | ||
117 | + .then((res) => {}) | ||
118 | + .catch((err) => { | ||
119 | + console.log(err); | ||
120 | + }) | ||
121 | + .finally(() => {}); | ||
122 | + }, | ||
123 | + handleCilckReply(item) { | ||
124 | + this.currentId = item._id; | ||
125 | + this.byReplyUser = item.nickname; | ||
126 | + this.isReply = !this.isReply; | ||
127 | + }, | ||
128 | + handleReply(reply) { | ||
129 | + let params = { | ||
130 | + _id: this.currentId, | ||
131 | + replyTime: new Date().getTime() + "", | ||
132 | + replyContent: reply.content, | ||
133 | + replyUser: reply.nickname, | ||
134 | + byReplyUser: this.byReplyUser, | ||
135 | + byReplyUser: this.byReplyUser, | ||
136 | + replyHeaderColor: colorList[Math.floor(Math.random() * 7)], | ||
137 | + }; | ||
138 | + return apiUpdateReplys(params) | ||
139 | + .then((res) => { | ||
140 | + this.isReply = false; | ||
141 | + this.likeList = []; | ||
142 | + this.$emit("success"); | ||
143 | + }) | ||
144 | + .catch((err) => { | ||
145 | + console.log(err); | ||
146 | + }) | ||
147 | + .finally(() => {}); | ||
148 | + }, | ||
149 | + }, | ||
150 | +}; | ||
151 | +</script> | ||
152 | + | ||
153 | +<style lang="less" scoped> | ||
154 | +.comment-main { | ||
155 | + padding: 20px; | ||
156 | + width: 70%; | ||
157 | + margin: 0 auto; | ||
158 | + // border: 1px solid @borderColor; | ||
159 | + // border-radius: 6px; | ||
160 | + .side-title { | ||
161 | + font-size: 14px; | ||
162 | + margin-bottom: 30px; | ||
163 | + svg { | ||
164 | + font-size: 20px; | ||
165 | + } | ||
166 | + &::after { | ||
167 | + background: @warningColor; | ||
168 | + width: 19.5%; | ||
169 | + } | ||
170 | + &:hover { | ||
171 | + &::after { | ||
172 | + width: 100%; | ||
173 | + } | ||
174 | + } | ||
175 | + span { | ||
176 | + color: @warningColor; | ||
177 | + margin-right: 4px; | ||
178 | + font-weight: bold; | ||
179 | + } | ||
180 | + } | ||
181 | + .comment-item { | ||
182 | + position: relative; | ||
183 | + padding-bottom: 10px; | ||
184 | + &::after { | ||
185 | + content: ""; | ||
186 | + position: absolute; | ||
187 | + bottom: 0; | ||
188 | + left: 0; | ||
189 | + width: 100%; | ||
190 | + height: 1px; | ||
191 | + background-color: @borderColor; | ||
192 | + } | ||
193 | + .comment-part { | ||
194 | + display: flex; | ||
195 | + align-items: flex-start; | ||
196 | + padding: 20px 0 10px; | ||
197 | + | ||
198 | + .item-img { | ||
199 | + padding-right: 24px; | ||
200 | + svg { | ||
201 | + font-size: 32px; | ||
202 | + } | ||
203 | + img { | ||
204 | + height: 42px; | ||
205 | + width: 42px; | ||
206 | + object-fit: cover; | ||
207 | + border-radius: 50%; | ||
208 | + } | ||
209 | + } | ||
210 | + .item-box { | ||
211 | + flex: 1; | ||
212 | + .box-title { | ||
213 | + color: @mainColor; | ||
214 | + font-size: 14px; | ||
215 | + font-weight: bold; | ||
216 | + span { | ||
217 | + font-size: 12px; | ||
218 | + color: @borderBoldColor; | ||
219 | + font-weight: 500; | ||
220 | + } | ||
221 | + } | ||
222 | + .box-content { | ||
223 | + font-size: 14px; | ||
224 | + color: @thinColor; | ||
225 | + line-height: 24px; | ||
226 | + margin-top: 10px; | ||
227 | + } | ||
228 | + .item-icon { | ||
229 | + display: flex; | ||
230 | + align-items: center; | ||
231 | + justify-content: flex-end; | ||
232 | + cursor: pointer; | ||
233 | + .box-icon { | ||
234 | + display: flex; | ||
235 | + justify-content: flex-end; | ||
236 | + color: @assistColor; | ||
237 | + padding-left: 24px; | ||
238 | + svg { | ||
239 | + margin-right: 6px; | ||
240 | + font-size: 18px; | ||
241 | + } | ||
242 | + span { | ||
243 | + position: relative; | ||
244 | + top: 1px; | ||
245 | + } | ||
246 | + } | ||
247 | + .icon-likes { | ||
248 | + color: #dfa400; | ||
249 | + } | ||
250 | + } | ||
251 | + } | ||
252 | + } | ||
253 | + } | ||
254 | +} | ||
255 | +</style> |
1 | +<template> | ||
2 | + <div | ||
3 | + @keyup.esc="hidePicker" | ||
4 | + ref="container" | ||
5 | + class="emoji-wrapper" | ||
6 | + hidefocus="true" | ||
7 | + v-on="handleMouse()" | ||
8 | + > | ||
9 | + <span class="emoji-button" @click.stop="togglePickerVisibility"> | ||
10 | + <img | ||
11 | + :class="{ inactive: !pickerVisible }" | ||
12 | + class="button-icon" | ||
13 | + src="../../../images/emoji/icon.svg" | ||
14 | + width="20" | ||
15 | + height="20" | ||
16 | + alt | ||
17 | + /> | ||
18 | + <span v-if="buttonTextVisible" class="button-text">表情</span> | ||
19 | + </span> | ||
20 | + <ul :class="['emoji-picker', pickerPosition]" v-if="pickerVisible"> | ||
21 | + <li v-for="(url, key) in files" :key="key" class="emoji-picker-item"> | ||
22 | + <img | ||
23 | + class="emoji-icon" | ||
24 | + @click="handlerSelect" | ||
25 | + width="20" | ||
26 | + height="20" | ||
27 | + :src="url" | ||
28 | + alt | ||
29 | + /> | ||
30 | + </li> | ||
31 | + </ul> | ||
32 | + </div> | ||
33 | +</template> | ||
34 | +<script> | ||
35 | +const requireEmoji = require.context("../../../images/emoji"); | ||
36 | +let files = requireEmoji.keys(); | ||
37 | +export default { | ||
38 | + data() { | ||
39 | + return { | ||
40 | + pickerVisible: false, | ||
41 | + files: files.map((url) => | ||
42 | + require(`../../../images/emoji/${url.slice(2)}`) | ||
43 | + ), | ||
44 | + }; | ||
45 | + }, | ||
46 | + props: { | ||
47 | + buttonTextVisible: { | ||
48 | + type: Boolean, | ||
49 | + default: true, | ||
50 | + }, | ||
51 | + triggerPick: { | ||
52 | + tyep: String, | ||
53 | + default: "hover", | ||
54 | + validator(value) { | ||
55 | + return ["hover", "click"].includes(value); | ||
56 | + }, | ||
57 | + }, | ||
58 | + pickerPosition: { | ||
59 | + type: String, | ||
60 | + default: "right", | ||
61 | + validator(value) { | ||
62 | + return ["left", "middle", "right"].includes(value); | ||
63 | + }, | ||
64 | + }, | ||
65 | + }, | ||
66 | + watch: { | ||
67 | + pickerVisible(newValue) { | ||
68 | + newValue ? this.$emit("activated") : this.$emit("inactivated"); | ||
69 | + }, | ||
70 | + }, | ||
71 | + mounted() { | ||
72 | + const docHandleClick = (this.docHandleClick = (e) => { | ||
73 | + if (!this.$refs.container.contains(e.target)) { | ||
74 | + this.hidePicker(); | ||
75 | + } | ||
76 | + }); | ||
77 | + const handleKeyup = (this.handleKeyup = (e) => { | ||
78 | + if (e.key === "Escape") { | ||
79 | + this.hidePicker(); | ||
80 | + } | ||
81 | + }); | ||
82 | + document.addEventListener("click", docHandleClick); | ||
83 | + document.addEventListener("keyup", handleKeyup); | ||
84 | + }, | ||
85 | + destroyed() { | ||
86 | + document.removeEventListener("click", this.docHandleClick); | ||
87 | + document.removeEventListener("click", this.handleKeyup); | ||
88 | + }, | ||
89 | + methods: { | ||
90 | + handlerSelect(e) { | ||
91 | + this.$emit("selected", e); | ||
92 | + }, | ||
93 | + hidePicker() { | ||
94 | + this.pickerVisible = false; | ||
95 | + }, | ||
96 | + togglePickerVisibility() { | ||
97 | + if (this.triggerPick === "click") { | ||
98 | + this.pickerVisible = !this.pickerVisible; | ||
99 | + } | ||
100 | + }, | ||
101 | + handleMouse() { | ||
102 | + const mouseenter = function () { | ||
103 | + this.pickerVisible = true; | ||
104 | + }.bind(this); | ||
105 | + const mouseleave = function () { | ||
106 | + this.pickerVisible = false; | ||
107 | + }.bind(this); | ||
108 | + if (this.triggerPick === "hover") { | ||
109 | + return { | ||
110 | + mouseenter, | ||
111 | + mouseleave, | ||
112 | + }; | ||
113 | + } else { | ||
114 | + return {}; | ||
115 | + } | ||
116 | + }, | ||
117 | + }, | ||
118 | +}; | ||
119 | +</script> | ||
120 | + | ||
121 | + | ||
122 | +<style scoped lang="less"> | ||
123 | +.emoji-picker { | ||
124 | + display: flex; | ||
125 | + flex-wrap: wrap; | ||
126 | + width: 300px; | ||
127 | +} | ||
128 | +.emoji-picker-item { | ||
129 | + margin: 4px; | ||
130 | + cursor: pointer; | ||
131 | + img { | ||
132 | + user-select: none; | ||
133 | + } | ||
134 | +} | ||
135 | +.emoji-wrapper { | ||
136 | + position: relative; | ||
137 | + display: inline-block; | ||
138 | + z-index: 1000; | ||
139 | +} | ||
140 | +.emoji-button { | ||
141 | + font-size: 14px; | ||
142 | + cursor: pointer; | ||
143 | + user-select: none; | ||
144 | + display: flex; | ||
145 | + justify-content: center; | ||
146 | + align-items: center; | ||
147 | + .button-icon { | ||
148 | + margin-right: 6px; | ||
149 | + &.inactive { | ||
150 | + filter: grayscale(100%); | ||
151 | + } | ||
152 | + } | ||
153 | + &:hover { | ||
154 | + color: #027fff; | ||
155 | + } | ||
156 | + .button-text { | ||
157 | + vertical-align: super; | ||
158 | + } | ||
159 | +} | ||
160 | +.emoji-picker { | ||
161 | + background: #fff; | ||
162 | + box-shadow: @borderBoldColor 1px 1px 7px; | ||
163 | + border-radius: 5px; | ||
164 | + padding: 10px; | ||
165 | + display: flex; | ||
166 | + position: absolute; | ||
167 | + &.left { | ||
168 | + right: 0; | ||
169 | + } | ||
170 | + &.middle { | ||
171 | + left: 50%; | ||
172 | + transform: translateX(-50%); | ||
173 | + } | ||
174 | +} | ||
175 | +</style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<template> | ||
2 | + <div type="text" class="input-box-wrapper"> | ||
3 | + <div | ||
4 | + class="content textarea" | ||
5 | + ref="richText" | ||
6 | + v-on="listeners" | ||
7 | + v-bind="$attrs" | ||
8 | + :contenteditable="true" | ||
9 | + ></div> | ||
10 | + <div class="append-wrapper"> | ||
11 | + <slot name="append"></slot> | ||
12 | + </div> | ||
13 | + </div> | ||
14 | +</template> | ||
15 | +<script> | ||
16 | +export default { | ||
17 | + name: "input-box", | ||
18 | + props: {}, | ||
19 | + data() { | ||
20 | + return {}; | ||
21 | + }, | ||
22 | + computed: { | ||
23 | + listeners() { | ||
24 | + return Object.assign({}, this.$listeners, { | ||
25 | + input: function (e) { | ||
26 | + const inputContent = e.target.innerHTML; | ||
27 | + this.$emit("input", inputContent); | ||
28 | + }.bind(this), | ||
29 | + }); | ||
30 | + }, | ||
31 | + }, | ||
32 | + mounted() {}, | ||
33 | + methods: { | ||
34 | + focus() { | ||
35 | + this.$refs.richText.focus(); | ||
36 | + }, | ||
37 | + reset() { | ||
38 | + this.$refs.richText.innerHTML = ""; | ||
39 | + }, | ||
40 | + }, | ||
41 | +}; | ||
42 | +</script> | ||
43 | + | ||
44 | +<style scoped lang="less"> | ||
45 | +.input-box-wrapper { | ||
46 | + position: relative; | ||
47 | +} | ||
48 | +.content { | ||
49 | + max-height: 200px; | ||
50 | + overflow: auto; | ||
51 | + &::-webkit-scrollbar { | ||
52 | + width: 0; | ||
53 | + } | ||
54 | + &.textarea { | ||
55 | + min-height: 100px; | ||
56 | + } | ||
57 | + &.text { | ||
58 | + min-height: 80px; | ||
59 | + } | ||
60 | + &:empty:before { | ||
61 | + content: attr(placeholder); | ||
62 | + color: @borderBoldColor; | ||
63 | + position: absolute; | ||
64 | + left: 10px; | ||
65 | + top: 7px; | ||
66 | + } | ||
67 | + &.focused { | ||
68 | + border: #66b1ff 1px solid; | ||
69 | + cursor: text; | ||
70 | + } | ||
71 | + &:focus { | ||
72 | + outline: none; | ||
73 | + } | ||
74 | + border: 1px solid @borderBoldColor; | ||
75 | + border-radius: 3px; | ||
76 | + padding: 7px 10px; | ||
77 | + padding-right: 30px; | ||
78 | + position: relative; | ||
79 | +} | ||
80 | +.append-wrapper { | ||
81 | + position: absolute; | ||
82 | + right: 1px; | ||
83 | + top: 1px; | ||
84 | + bottom: 1px; | ||
85 | + display: flex; | ||
86 | + cursor: pointer; | ||
87 | + align-items: center; | ||
88 | +} | ||
89 | +</style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<template> | ||
2 | + <div class="reply-item"> | ||
3 | + <Icon | ||
4 | + name="icon-user02" | ||
5 | + :style="{ color: replyHeaderColor }" | ||
6 | + class="item-img" | ||
7 | + ></Icon> | ||
8 | + <div class="reply-box"> | ||
9 | + <div class="box-content"> | ||
10 | + <div class="reply-user"> | ||
11 | + <span class="reply-name">{{ replyUser }}</span> | ||
12 | + <span class="by-reply-name">@ {{ byReplyUser }}:</span> | ||
13 | + </div> | ||
14 | + <div v-html="replyContent" class="reply-content"></div> | ||
15 | + </div> | ||
16 | + <div class="reply-date"> | ||
17 | + {{ replyTime | formatTime("yyyy-MM-dd hh:mm:ss") }} | ||
18 | + </div> | ||
19 | + </div> | ||
20 | + </div> | ||
21 | +</template> | ||
22 | + | ||
23 | +<script> | ||
24 | +export default { | ||
25 | + name: "replyItem", | ||
26 | + components: {}, | ||
27 | + props: { | ||
28 | + byReplyUser: { | ||
29 | + type: String, | ||
30 | + default: "", | ||
31 | + }, | ||
32 | + replyContent: { | ||
33 | + type: String, | ||
34 | + default: "", | ||
35 | + }, | ||
36 | + replyHeaderColor: { | ||
37 | + type: String, | ||
38 | + default: "", | ||
39 | + }, | ||
40 | + replyTime: { | ||
41 | + type: String, | ||
42 | + default: "", | ||
43 | + }, | ||
44 | + replyUser: { | ||
45 | + type: String, | ||
46 | + default: "", | ||
47 | + }, | ||
48 | + }, | ||
49 | + computed: {}, | ||
50 | + data() { | ||
51 | + return {}; | ||
52 | + }, | ||
53 | + watch: {}, | ||
54 | + created() {}, | ||
55 | + mounted() {}, | ||
56 | + beforeDestroy() {}, | ||
57 | + methods: {}, | ||
58 | +}; | ||
59 | +</script> | ||
60 | + | ||
61 | +<style lang="less" scoped> | ||
62 | +.reply-item { | ||
63 | + background-color: @thinBgColor; | ||
64 | + padding: 10px 20px; | ||
65 | + margin-left: 42px; | ||
66 | + margin-bottom: 10px; | ||
67 | + border-radius: 10px; | ||
68 | + display: flex; | ||
69 | + align-items: flex-start; | ||
70 | + .item-img { | ||
71 | + font-size: 32px; | ||
72 | + margin-right: 10px; | ||
73 | + } | ||
74 | + .reply-box { | ||
75 | + flex: 1; | ||
76 | + .box-content { | ||
77 | + .reply-user { | ||
78 | + font-size: 14px; | ||
79 | + line-height: 24px; | ||
80 | + .reply-name { | ||
81 | + color: @mainColor; | ||
82 | + } | ||
83 | + .by-reply-name { | ||
84 | + color: @warningColor; | ||
85 | + } | ||
86 | + } | ||
87 | + .reply-content { | ||
88 | + flex: 1; | ||
89 | + font-size: 14px; | ||
90 | + line-height: 24px; | ||
91 | + color: @thinColor; | ||
92 | + } | ||
93 | + } | ||
94 | + .reply-date { | ||
95 | + font-size: 12px; | ||
96 | + color: @borderBoldColor; | ||
97 | + margin-top: 2px; | ||
98 | + text-align: right; | ||
99 | + } | ||
100 | + } | ||
101 | +} | ||
102 | +</style> |
1 | +<template> | ||
2 | + <div class="home-wrapper" v-loading="loading"> | ||
3 | + <div class="side-title"> | ||
4 | + <Icon name="icon-message"></Icon> | ||
5 | + 留言板 | ||
6 | + </div> | ||
7 | + <div class="home-body"> | ||
8 | + <comment-editor @submit="handleComment" ref="editor"></comment-editor> | ||
9 | + | ||
10 | + <comment-item | ||
11 | + v-if="total > 0" | ||
12 | + :commentList="commentList" | ||
13 | + :total="total" | ||
14 | + :replyCount="replyCount" | ||
15 | + @success="initData" | ||
16 | + ></comment-item> | ||
17 | + <none-data v-else-if="!total"></none-data> | ||
18 | + | ||
19 | + <Paging | ||
20 | + :page-index="pageindex" | ||
21 | + :total="total" | ||
22 | + :page-size="pagesize" | ||
23 | + @change="pageChange" | ||
24 | + ></Paging> | ||
25 | + </div> | ||
26 | + </div> | ||
27 | +</template> | ||
28 | +<script> | ||
29 | +import CommentEditor from "./components/commentEditor"; | ||
30 | +import { | ||
31 | + apiAddMessage, | ||
32 | + apiGetMessageList, | ||
33 | + apiGetReplyCount, | ||
34 | +} from "api/message"; | ||
35 | +import CommentItem from "./components/commentItem"; | ||
36 | +export default { | ||
37 | + name: "commentIndex", | ||
38 | + components: { CommentEditor, CommentItem }, | ||
39 | + data() { | ||
40 | + return { | ||
41 | + loading: false, | ||
42 | + commentList: [], | ||
43 | + pageindex: 1, | ||
44 | + pagesize: 8, | ||
45 | + total: -1, // 评论数量 | ||
46 | + replyCount: 0, // 回复数量 | ||
47 | + }; | ||
48 | + }, | ||
49 | + props: {}, | ||
50 | + computed: {}, | ||
51 | + destroyed() { }, | ||
52 | + mounted() { | ||
53 | + this.initData(); | ||
54 | + }, | ||
55 | + methods: { | ||
56 | + pageChange(page) { | ||
57 | + this.pageindex = page; | ||
58 | + document.documentElement.scrollTop = document.body.scrollTop = 0; | ||
59 | + this.getMessageList(); | ||
60 | + }, | ||
61 | + initData() { | ||
62 | + this.loading = true; | ||
63 | + Promise.all([this.getMessageList(), this.getReplyCount()]) | ||
64 | + .catch((err) => { | ||
65 | + console.log(err); | ||
66 | + }) | ||
67 | + .finally(() => { | ||
68 | + this.loading = false; | ||
69 | + }); | ||
70 | + }, | ||
71 | + handleComment(params) { | ||
72 | + return apiAddMessage(params) | ||
73 | + .then((res) => { | ||
74 | + this.$refs.editor.handleReset(); | ||
75 | + this.getMessageList(); | ||
76 | + }) | ||
77 | + .catch((err) => { | ||
78 | + console.log(err); | ||
79 | + }) | ||
80 | + .finally(() => { }); | ||
81 | + }, | ||
82 | + getMessageList() { | ||
83 | + let params = { | ||
84 | + pageindex: this.pageindex, | ||
85 | + pagesize: this.pagesize, | ||
86 | + }; | ||
87 | + return apiGetMessageList(params) | ||
88 | + .then((res) => { | ||
89 | + let { list, total } = res.data; | ||
90 | + this.commentList = list; | ||
91 | + this.total = total; | ||
92 | + }) | ||
93 | + .catch((err) => { | ||
94 | + console.log(err); | ||
95 | + }) | ||
96 | + .finally(() => { }); | ||
97 | + }, | ||
98 | + getReplyCount() { | ||
99 | + return apiGetReplyCount() | ||
100 | + .then((res) => { | ||
101 | + let { data } = res; | ||
102 | + this.replyCount = data[0].replyCount; | ||
103 | + }) | ||
104 | + .catch((err) => { | ||
105 | + console.log(err); | ||
106 | + }) | ||
107 | + .finally(() => { }); | ||
108 | + }, | ||
109 | + }, | ||
110 | +}; | ||
111 | +</script> | ||
112 | + | ||
113 | +<style scoped lang="less"> | ||
114 | +.home-body { | ||
115 | + background-color: #fff; | ||
116 | + flex-direction: column; | ||
117 | + padding-bottom: 24px; | ||
118 | +} | ||
119 | +.side-title { | ||
120 | + width: 1200px; | ||
121 | + background-color: #fff; | ||
122 | + margin: 20px auto 0; | ||
123 | + padding-left: 20px; | ||
124 | + &::after { | ||
125 | + width: 8.5%; | ||
126 | + } | ||
127 | + &:hover { | ||
128 | + &::after { | ||
129 | + width: 100%; | ||
130 | + } | ||
131 | + } | ||
132 | +} | ||
133 | +.none-data-wrapper { | ||
134 | + width: 100%; | ||
135 | +} | ||
136 | +.paging-container { | ||
137 | + margin: 0 auto; | ||
138 | + padding-top: 24px; | ||
139 | +} | ||
140 | +</style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +<template> | ||
2 | + <div class="home-wrapper"> | ||
3 | + <div class="side-title"> | ||
4 | + <Icon name="icon-me"></Icon> | ||
5 | + 关于我们 | ||
6 | + </div> | ||
7 | + <div class="home-body"> | ||
8 | + <div class="myself-main"> | ||
9 | + <div class="main-desc"> | ||
10 | + | ||
11 | + | ||
12 | + </div> | ||
13 | + </div> | ||
14 | + <div class="side-main"> | ||
15 | + <div class="side-wrapper"> | ||
16 | + <div class="side-img"> | ||
17 | + <img src="../../images/avatar.png" class="avatar" alt="" /> | ||
18 | + </div> | ||
19 | + <div class="side-content"> | ||
20 | + <div class="content-item">RF</div> | ||
21 | + <div class="content-item">Running Football</div> | ||
22 | + </div> | ||
23 | + </div> | ||
24 | + </div> | ||
25 | + </div> | ||
26 | + </div> | ||
27 | +</template> | ||
28 | +<script> | ||
29 | +export default { | ||
30 | + name: "myself", | ||
31 | + components: {}, | ||
32 | + props: {}, | ||
33 | + computed: {}, | ||
34 | + data() { | ||
35 | + return {}; | ||
36 | + }, | ||
37 | + watch: {}, | ||
38 | + created() {}, | ||
39 | + mounted() {}, | ||
40 | + beforeDestroy() {}, | ||
41 | + methods: {}, | ||
42 | +}; | ||
43 | +</script> | ||
44 | +<style lang="less" scoped> | ||
45 | +.home-body { | ||
46 | + background-color: #fff; | ||
47 | +} | ||
48 | +.side-title { | ||
49 | + width: 1200px; | ||
50 | + background-color: #fff; | ||
51 | + margin: 20px auto 0; | ||
52 | + padding-left: 20px; | ||
53 | + &::after { | ||
54 | + width: 8.4%; | ||
55 | + } | ||
56 | + &:hover { | ||
57 | + &::after { | ||
58 | + width: 100%; | ||
59 | + } | ||
60 | + } | ||
61 | +} | ||
62 | +.myself-main { | ||
63 | + width: 70%; | ||
64 | + padding: 24px; | ||
65 | + border-right: 1px solid @borderColor; | ||
66 | + .main-desc { | ||
67 | + font-size: 14px; | ||
68 | + line-height: 32px; | ||
69 | + color: @thinColor; | ||
70 | + } | ||
71 | + .main-img { | ||
72 | + margin-top: 10px; | ||
73 | + max-height: 300px; | ||
74 | + object-fit: contain; | ||
75 | + } | ||
76 | + .main-footer { | ||
77 | + background: @thinBgColor; | ||
78 | + padding: 10px; | ||
79 | + text-align: left; | ||
80 | + line-height: 32px; | ||
81 | + margin: 20px auto; | ||
82 | + color: #0609308a; | ||
83 | + a { | ||
84 | + color: #0609308a; | ||
85 | + text-decoration: underline; | ||
86 | + } | ||
87 | + } | ||
88 | +} | ||
89 | +.side-main { | ||
90 | + flex: 1; | ||
91 | + .side-wrapper { | ||
92 | + margin-top: 24px; | ||
93 | + .side-title { | ||
94 | + width: 92%; | ||
95 | + margin: 0; | ||
96 | + padding-left: 0; | ||
97 | + svg { | ||
98 | + font-size: 24px; | ||
99 | + } | ||
100 | + &::after { | ||
101 | + width: 10%; | ||
102 | + } | ||
103 | + &:hover { | ||
104 | + &::after { | ||
105 | + width: 100%; | ||
106 | + } | ||
107 | + } | ||
108 | + } | ||
109 | + .side-img { | ||
110 | + display: flex; | ||
111 | + justify-content: center; | ||
112 | + margin-bottom: 24px; | ||
113 | + .avatar { | ||
114 | + width: 100px; | ||
115 | + height: 100px; | ||
116 | + border-radius: 50%; | ||
117 | + } | ||
118 | + .qrcode { | ||
119 | + width: 80%; | ||
120 | + height: 80%; | ||
121 | + border-radius: 6px; | ||
122 | + margin-top: 24px; | ||
123 | + } | ||
124 | + } | ||
125 | + .side-content { | ||
126 | + .content-item { | ||
127 | + width: 92%; | ||
128 | + padding: 5px 10px; | ||
129 | + margin: 5px 0; | ||
130 | + border-radius: 5px; | ||
131 | + font-size: 14px; | ||
132 | + color: @thinColor; | ||
133 | + background-color: @thinBgColor; | ||
134 | + } | ||
135 | + } | ||
136 | + } | ||
137 | +} | ||
138 | +</style> |
1 | +import blogModel from "../../models/blog"; | ||
2 | + | ||
3 | +module.exports = { | ||
4 | + async list(ctx, next) { | ||
5 | + console.log( | ||
6 | + "----------------获取博客列表 client_api/blog/list-----------------------" | ||
7 | + ); | ||
8 | + let { | ||
9 | + keyword = null, | ||
10 | + isQuery = null, | ||
11 | + pageindex = 1, | ||
12 | + pagesize = 9, | ||
13 | + sortBy = null, | ||
14 | + } = ctx.request.query; | ||
15 | + | ||
16 | + // 条件参数 | ||
17 | + let conditions = { isVisible: true }; | ||
18 | + if (keyword) { | ||
19 | + let reg = new RegExp(keyword, "i"); | ||
20 | + // 区分搜索框、标签场景 | ||
21 | + let searchObj = isQuery | ||
22 | + ? [{ title: { $regex: reg } }, { desc: { $regex: reg } }] | ||
23 | + : [{ type: { $regex: reg } }]; | ||
24 | + conditions["$or"] = [...searchObj]; | ||
25 | + } | ||
26 | + // 排序参数 | ||
27 | + let sortParams = {}; | ||
28 | + if (sortBy) { | ||
29 | + sortParams[sortBy] = -1; | ||
30 | + sortParams["releaseTime"] = -1; | ||
31 | + } | ||
32 | + | ||
33 | + let options = { | ||
34 | + limit: pagesize * 1, | ||
35 | + skip: (pageindex - 1) * pagesize, | ||
36 | + sort: sortParams, | ||
37 | + }; | ||
38 | + | ||
39 | + try { | ||
40 | + let data = await ctx.find(blogModel, conditions, null, options); | ||
41 | + return ctx.send(data); | ||
42 | + } catch (e) { | ||
43 | + console.log(e); | ||
44 | + return ctx.sendError(e); | ||
45 | + } | ||
46 | + }, | ||
47 | + | ||
48 | + async info(ctx, next) { | ||
49 | + console.log( | ||
50 | + "----------------获取博客信息 client_api/blog/info-----------------------" | ||
51 | + ); | ||
52 | + let _id = ctx.request.query._id; | ||
53 | + try { | ||
54 | + let data = await ctx.findOne(blogModel, { _id }); | ||
55 | + return ctx.send(data); | ||
56 | + } catch (e) { | ||
57 | + return ctx.sendError(e); | ||
58 | + } | ||
59 | + }, | ||
60 | + | ||
61 | + async updateLikes(ctx, next) { | ||
62 | + console.log( | ||
63 | + "----------------点赞文章 client_api/blog/updateLikes------------------" | ||
64 | + ); | ||
65 | + let paramsData = ctx.request.body; | ||
66 | + let num = JSON.parse(paramsData.isLike) ? -1 : 1; | ||
67 | + let options = { $inc: { likes: num } }; | ||
68 | + try { | ||
69 | + let data = await ctx.update(blogModel, { _id: paramsData._id }, options); | ||
70 | + ctx.send(); | ||
71 | + } catch (e) { | ||
72 | + ctx.sendError(e); | ||
73 | + } | ||
74 | + }, | ||
75 | + | ||
76 | + async updatePV(ctx, next) { | ||
77 | + console.log( | ||
78 | + "----------------文章浏览量 client_api/blog/updatePV------------------" | ||
79 | + ); | ||
80 | + let paramsData = ctx.request.body; | ||
81 | + let options = { $inc: { pv: 1 } }; | ||
82 | + try { | ||
83 | + let data = await ctx.update(blogModel, { _id: paramsData._id }, options); | ||
84 | + ctx.send(); | ||
85 | + } catch (e) { | ||
86 | + ctx.sendError(e); | ||
87 | + } | ||
88 | + }, | ||
89 | +}; |
1 | +import labelModel from "../../models/label"; | ||
2 | + | ||
3 | +module.exports = { | ||
4 | + async list(ctx, next) { | ||
5 | + console.log( | ||
6 | + "----------------获取标签列表 label/list-----------------------" | ||
7 | + ); | ||
8 | + let { keyword, pageindex = 1, pagesize = 50 } = ctx.request.query; | ||
9 | + try { | ||
10 | + let reg = new RegExp(keyword, "i"); | ||
11 | + let data = await ctx.findPage( | ||
12 | + labelModel, | ||
13 | + { | ||
14 | + $or: [{ label: { $regex: reg } }, { bgColor: { $regex: reg } }], | ||
15 | + }, | ||
16 | + null, | ||
17 | + { limit: pagesize * 1, skip: (pageindex - 1) * pagesize } | ||
18 | + ); | ||
19 | + ctx.send(data); | ||
20 | + } catch (e) { | ||
21 | + console.log(e); | ||
22 | + ctx.sendError(e); | ||
23 | + } | ||
24 | + }, | ||
25 | +}; |
1 | +import messageModel from '../../models/message'; | ||
2 | + | ||
3 | +module.exports = { | ||
4 | + async add(ctx, next) { | ||
5 | + console.log('----------------添加留言 message/add-----------------------'); | ||
6 | + let paramsData = ctx.request.body; | ||
7 | + if (!paramsData.nickname) { | ||
8 | + paramsData.nickname = '匿名网友'; | ||
9 | + } | ||
10 | + try { | ||
11 | + await ctx.add(messageModel, paramsData); | ||
12 | + ctx.send(paramsData); | ||
13 | + } catch (e) { | ||
14 | + ctx.sendError(e); | ||
15 | + } | ||
16 | + }, | ||
17 | + | ||
18 | + async list(ctx, next) { | ||
19 | + console.log( | ||
20 | + '----------------获取评论列表 client_api/message/list-----------------------' | ||
21 | + ); | ||
22 | + let { pageindex = 1, pagesize = 10 } = ctx.request.query; | ||
23 | + | ||
24 | + // 排序参数 | ||
25 | + let sortParams = { | ||
26 | + createTime: -1, | ||
27 | + }; | ||
28 | + | ||
29 | + let options = { | ||
30 | + limit: pagesize * 1, | ||
31 | + skip: (pageindex - 1) * pagesize, | ||
32 | + sort: sortParams, | ||
33 | + }; | ||
34 | + | ||
35 | + try { | ||
36 | + let data = await ctx.find(messageModel, null, null, options); | ||
37 | + return ctx.send(data); | ||
38 | + } catch (e) { | ||
39 | + console.log(e); | ||
40 | + return ctx.sendError(e); | ||
41 | + } | ||
42 | + }, | ||
43 | + | ||
44 | + async replyCount(ctx, next) { | ||
45 | + console.log( | ||
46 | + '----------------获取回复列表 client_api/message/replyCount-----------------------' | ||
47 | + ); | ||
48 | + let conditions = [ | ||
49 | + { $project: { replyCount: { $size: '$replyList' } } }, | ||
50 | + { $group: { _id: null, replyCount: { $sum: '$replyCount' } } }, | ||
51 | + ]; | ||
52 | + try { | ||
53 | + let data = await ctx.aggregate(messageModel, conditions); | ||
54 | + return ctx.send(data); | ||
55 | + } catch (e) { | ||
56 | + console.log(e); | ||
57 | + return ctx.sendError(e); | ||
58 | + } | ||
59 | + }, | ||
60 | + | ||
61 | + async updateLikes(ctx, next) { | ||
62 | + console.log( | ||
63 | + '----------------点赞留言 client_api/message/updateLikes------------------' | ||
64 | + ); | ||
65 | + let paramsData = ctx.request.body; | ||
66 | + let num = JSON.parse(paramsData.isLike) ? -1 : 1; | ||
67 | + let options = { $inc: { likes: num } }; | ||
68 | + try { | ||
69 | + let data = await ctx.update( | ||
70 | + messageModel, | ||
71 | + { _id: paramsData._id }, | ||
72 | + options | ||
73 | + ); | ||
74 | + ctx.send(); | ||
75 | + } catch (e) { | ||
76 | + ctx.sendError(e); | ||
77 | + } | ||
78 | + }, | ||
79 | + | ||
80 | + async updateReplys(ctx, next) { | ||
81 | + console.log( | ||
82 | + '----------------回复留言 client_api/message/updateReplys------------------' | ||
83 | + ); | ||
84 | + let paramsData = ctx.request.body; | ||
85 | + if (!paramsData.replyUser) { | ||
86 | + paramsData.replyUser = '匿名网友'; | ||
87 | + } | ||
88 | + let options = { | ||
89 | + $push: { replyList: { $each: [paramsData], $position: 0 } }, | ||
90 | + }; | ||
91 | + try { | ||
92 | + let data = await ctx.update( | ||
93 | + messageModel, | ||
94 | + { _id: paramsData._id }, | ||
95 | + options | ||
96 | + ); | ||
97 | + ctx.send(); | ||
98 | + } catch (e) { | ||
99 | + ctx.sendError(e); | ||
100 | + } | ||
101 | + }, | ||
102 | +}; |
-
Please register or login to post a comment