Merge Request #6
← To merge requests
From
adam:master
into
jp:master
Commits (1)
Showing
40 changed files
Show diff stats
src/App.vue
1 | <template> | 1 | <template> |
2 | <div id="app"> | 2 | <div id="app"> |
3 | <router-view /> | 3 | <router-view /> |
4 | </div> | 4 | </div> |
5 | |||
6 | </template> | 5 | </template> |
7 | 6 | ||
7 | |||
8 | <script> | 8 | <script> |
9 | export default { | 9 | export default { |
10 | name: 'App' | 10 | name: "App" |
11 | } | 11 | }; |
12 | </script> | 12 | </script> |
13 | |||
14 | |||
15 | <style> | ||
16 | @import "//at.alicdn.com/t/font_1075796_5kpx2vwkmq3.css"; | ||
17 | |||
18 | [class^="el-icon-mo"], | ||
19 | [class^=" el-icon-mo"] { | ||
20 | font-family: "iconfont", serif !important; | ||
21 | font-size: 16px; | ||
22 | font-style: normal; | ||
23 | -webkit-font-smoothing: antialiased; | ||
24 | -moz-osx-font-smoothing: grayscale; | ||
25 | } |
src/icons/svg/404.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M121.718 73.272v9.953c3.957-7.584 6.199-16.05 6.199-24.995C127.917 26.079 99.273 0 63.958 0 28.644 0 0 26.079 0 58.23c0 .403.028.806.028 1.21l22.97-25.953h13.34l-19.76 27.187h6.42V53.77l13.728-19.477v49.361H22.998V73.272H2.158c5.951 20.284 23.608 36.208 45.998 41.399-1.44 3.3-5.618 11.263-12.565 12.674-8.607 1.764 23.358.428 46.163-13.178 17.519-4.611 31.938-15.849 39.77-30.513h-13.506V73.272H85.02V59.464l22.998-25.977h13.008l-19.429 27.187h6.421v-7.433l13.727-19.402v39.433h-.027zm-78.24 2.822a10.516 10.516 0 0 1-.996-4.535V44.548c0-1.613.332-3.124.996-4.535a11.66 11.66 0 0 1 2.713-3.68c1.134-1.032 2.49-1.864 4.04-2.468 1.55-.605 3.21-.908 4.982-.908h11.292c1.77 0 3.431.303 4.981.908 1.522.604 2.85 1.41 3.986 2.418l-12.26 16.303v-2.898a1.96 1.96 0 0 0-.665-1.512c-.443-.403-.996-.604-1.66-.604-.665 0-1.218.201-1.661.604a1.96 1.96 0 0 0-.664 1.512v9.071L44.364 77.606a10.556 10.556 0 0 1-.886-1.512zm35.73-4.535c0 1.613-.332 3.124-.997 4.535a11.66 11.66 0 0 1-2.712 3.68c-1.134 1.032-2.49 1.864-4.04 2.469-1.55.604-3.21.907-4.982.907H55.185c-1.77 0-3.431-.303-4.981-.907-1.55-.605-2.906-1.437-4.041-2.47a12.49 12.49 0 0 1-1.384-1.512l13.727-18.217v6.375c0 .605.222 1.109.665 1.512.442.403.996.604 1.66.604.664 0 1.218-.201 1.66-.604a1.96 1.96 0 0 0 .665-1.512V53.87L75.97 36.838c.913.932 1.66 1.99 2.214 3.175.664 1.41.996 2.922.996 4.535v27.011h.028z"/></svg> |
src/icons/svg/bug.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M127.88 73.143c0 1.412-.506 2.635-1.518 3.669-1.011 1.033-2.209 1.55-3.592 1.55h-17.887c0 9.296-1.783 17.178-5.35 23.645l16.609 17.044c1.011 1.034 1.517 2.257 1.517 3.67 0 1.412-.506 2.635-1.517 3.668-.958 1.033-2.155 1.55-3.593 1.55-1.438 0-2.635-.517-3.593-1.55l-15.811-16.063a15.49 15.49 0 0 1-1.196 1.06c-.532.434-1.65 1.208-3.353 2.322a50.104 50.104 0 0 1-5.192 2.974c-1.758.87-3.94 1.658-6.546 2.364-2.607.706-5.189 1.06-7.748 1.06V47.044H58.89v73.062c-2.716 0-5.417-.367-8.106-1.102-2.688-.734-5.003-1.631-6.945-2.692a66.769 66.769 0 0 1-5.268-3.179c-1.571-1.057-2.73-1.94-3.476-2.65L33.9 109.34l-14.611 16.877c-1.066 1.14-2.344 1.711-3.833 1.711-1.277 0-2.422-.434-3.434-1.304-1.012-.978-1.557-2.187-1.635-3.627-.079-1.44.333-2.705 1.236-3.794l16.129-18.51c-3.087-6.197-4.63-13.644-4.63-22.342H5.235c-1.383 0-2.58-.517-3.592-1.55S.125 74.545.125 73.132c0-1.412.506-2.635 1.518-3.668 1.012-1.034 2.21-1.55 3.592-1.55h17.887V43.939L9.308 29.833c-1.012-1.033-1.517-2.256-1.517-3.669 0-1.412.505-2.635 1.517-3.668 1.012-1.034 2.21-1.55 3.593-1.55s2.58.516 3.593 1.55l13.813 14.106h67.396l13.814-14.106c1.012-1.034 2.21-1.55 3.592-1.55 1.384 0 2.581.516 3.593 1.55 1.012 1.033 1.518 2.256 1.518 3.668 0 1.413-.506 2.636-1.518 3.67l-13.814 14.105v23.975h17.887c1.383 0 2.58.516 3.593 1.55 1.011 1.033 1.517 2.256 1.517 3.668l-.005.01zM89.552 26.175H38.448c0-7.23 2.489-13.386 7.466-18.469C50.892 2.623 56.92.082 64 .082c7.08 0 13.108 2.541 18.086 7.624 4.977 5.083 7.466 11.24 7.466 18.469z"/></svg> |
src/icons/svg/chart.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M0 54.857h36.571V128H0V54.857zM91.429 27.43H128V128H91.429V27.429zM45.714 0h36.572v128H45.714V0z"/></svg> |
src/icons/svg/clipboard.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M54.857 118.857h64V73.143H89.143c-1.902 0-3.52-.668-4.855-2.002-1.335-1.335-2.002-2.954-2.002-4.855V36.57H54.857v82.286zM73.143 16v-4.571a2.2 2.2 0 0 0-.677-1.61 2.198 2.198 0 0 0-1.609-.676H20.571c-.621 0-1.158.225-1.609.676a2.198 2.198 0 0 0-.676 1.61V16a2.2 2.2 0 0 0 .676 1.61c.451.45.988.676 1.61.676h50.285c.622 0 1.158-.226 1.61-.677.45-.45.676-.987.676-1.609zm18.286 48h21.357L91.43 42.642V64zM128 73.143v48c0 1.902-.667 3.52-2.002 4.855-1.335 1.335-2.953 2.002-4.855 2.002H52.57c-1.901 0-3.52-.667-4.854-2.002-1.335-1.335-2.003-2.953-2.003-4.855v-11.429H6.857c-1.902 0-3.52-.667-4.855-2.002C.667 106.377 0 104.759 0 102.857v-96c0-1.902.667-3.52 2.002-4.855C3.337.667 4.955 0 6.857 0h77.714c1.902 0 3.52.667 4.855 2.002 1.335 1.335 2.003 2.953 2.003 4.855V30.29c1 .622 1.856 1.29 2.569 2.003l29.147 29.147c1.335 1.335 2.478 3.145 3.429 5.43.95 2.287 1.426 4.383 1.426 6.291v-.018z"/></svg> |
src/icons/svg/component.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h54.857v54.857H0V0zm0 73.143h54.857V128H0V73.143zm73.143 0H128V128H73.143V73.143zm27.428-18.286C115.72 54.857 128 42.577 128 27.43 128 12.28 115.72 0 100.571 0 85.423 0 73.143 12.28 73.143 27.429c0 15.148 12.28 27.428 27.428 27.428z"/></svg> |
src/icons/svg/documentation.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M71.984 44.815H115.9L71.984 9.642v35.173zM16.094.05h63.875l47.906 38.37v76.74c0 3.392-1.682 6.645-4.677 9.044-2.995 2.399-7.056 3.746-11.292 3.746H16.094c-4.236 0-8.297-1.347-11.292-3.746-2.995-2.399-4.677-5.652-4.677-9.044V12.84C.125 5.742 7.23.05 16.094.05zm71.86 102.32V89.58h-71.86v12.79h71.86zm23.952-25.58V64H16.094v12.79h95.812z"/></svg> |
src/icons/svg/drag.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M73.137 29.08h-9.209 29.7L63.886.093 34.373 29.08h20.49v27.035H27.238v17.948h27.625v27.133h18.274V74.063h27.41V56.115h-27.41V29.08zm-9.245 98.827l27.518-26.711H36.59l27.302 26.71zM.042 64.982l27.196 27.029V38.167L.042 64.982zm100.505-26.815V92.01l27.41-27.029-27.41-26.815z"/></svg> |
src/icons/svg/edit.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M106.133 67.2a4.797 4.797 0 0 0-4.8 4.8c0 .187.014.36.027.533h-.027V118.4H9.6V26.667h50.133c2.654 0 4.8-2.147 4.8-4.8 0-2.654-2.146-4.8-4.8-4.8H9.6a9.594 9.594 0 0 0-9.6 9.6V118.4c0 5.307 4.293 9.6 9.6 9.6h91.733c5.307 0 9.6-4.293 9.6-9.6V72.533h-.026c.013-.173.026-.346.026-.533 0-2.653-2.146-4.8-4.8-4.8z"/><path d="M125.16 13.373L114.587 2.8c-3.747-3.747-9.854-3.72-13.6.027l-52.96 52.96a4.264 4.264 0 0 0-.907 1.36L33.813 88.533c-.746 1.76-.226 3.534.907 4.68 1.133 1.147 2.92 1.667 4.693.92l31.4-13.293c.507-.213.96-.52 1.36-.907l52.96-52.96c3.747-3.746 3.774-9.853.027-13.6zM66.107 72.4l-18.32 7.76 7.76-18.32L92.72 24.667l10.56 10.56L66.107 72.4zm52.226-52.227l-8.266 8.267-10.56-10.56 8.266-8.267.027-.026 10.56 10.56-.027.026z"/></svg> |
src/icons/svg/education.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M88.883 119.565c-7.284 0-19.434 2.495-21.333 8.25v.127c-4.232.13-5.222 0-7.108 0-1.895-5.76-14.045-8.256-21.333-8.256H0V0h42.523c9.179 0 17.109 5.47 21.47 13.551C68.352 5.475 76.295 0 85.478 0H128v119.57l-39.113-.005h-.004zM60.442 24.763c0-9.651-8.978-16.507-17.777-16.507H7.108V111.43H39.11c7.054-.14 18.177.082 21.333 6.12v-4.628c-.134-5.722-.004-13.522 0-13.832V27.413l.004-2.655-.004.005zm60.442-16.517h-35.55c-8.802 0-17.78 6.856-17.78 16.493v74.259c.004.32.138 8.115 0 13.813v4.627c3.155-6.022 14.279-6.26 21.333-6.114h32V8.25l-.003-.005z"/></svg> |
src/icons/svg/email.svg
File was created | 1 | <svg width="128" height="96" xmlns="http://www.w3.org/2000/svg"><path d="M64.125 56.975L120.188.912A12.476 12.476 0 0 0 115.5 0h-103c-1.588 0-3.113.3-4.513.838l56.138 56.137z"/><path d="M64.125 68.287l-62.3-62.3A12.42 12.42 0 0 0 0 12.5v71C0 90.4 5.6 96 12.5 96h103c6.9 0 12.5-5.6 12.5-12.5v-71a12.47 12.47 0 0 0-1.737-6.35L64.125 68.287z"/></svg> |
src/icons/svg/excel.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M78.208 16.576v8.384h38.72v5.376h-38.72v8.704h38.72v5.376h-38.72v8.576h38.72v5.376h-38.72v8.576h38.72v5.376h-38.72v8.576h38.72v5.376h-38.72v8.512h38.72v5.376h-38.72v11.136H128v-94.72H78.208zM0 114.368L72.128 128V0L0 13.632v100.736z"/><path d="M28.672 82.56h-11.2l14.784-23.488-14.08-22.592h11.52l8.192 14.976 8.448-14.976h11.136l-14.08 22.208L58.368 82.56H46.656l-8.768-15.68z"/></svg> |
src/icons/svg/exit-fullscreen.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M49.217 41.329l-.136-35.24c-.06-2.715-2.302-4.345-5.022-4.405h-3.65c-2.712-.06-4.866 2.303-4.806 5.016l.152 19.164-24.151-23.79a6.698 6.698 0 0 0-9.499 0 6.76 6.76 0 0 0 0 9.526l23.93 23.713-18.345.074c-2.712-.069-5.228 1.813-5.64 5.02v3.462c.069 2.721 2.31 4.97 5.022 5.03l35.028-.207c.052.005.087.025.133.025l2.457.054a4.626 4.626 0 0 0 3.436-1.38c.88-.874 1.205-2.096 1.169-3.462l-.262-2.465c0-.048.182-.081.182-.136h.002zm52.523 51.212l18.32-.073c2.713.06 5.224-1.609 5.64-4.815v-3.462c-.068-2.722-2.317-4.97-5.021-5.04l-34.58.21c-.053 0-.086-.021-.138-.021l-2.451-.06a4.64 4.64 0 0 0-3.445 1.381c-.885.868-1.201 2.094-1.174 3.46l.27 2.46c.005.06-.177.095-.177.141l.141 34.697c.069 2.713 2.31 4.338 5.022 4.397l3.45.006c2.705.062 4.867-2.31 4.8-5.026l-.153-18.752 24.151 23.946a6.69 6.69 0 0 0 9.494 0 6.747 6.747 0 0 0 0-9.523L101.74 92.54v.001zM48.125 80.662a4.636 4.636 0 0 0-3.437-1.382l-2.457.06c-.05 0-.082.022-.137.022l-35.025-.21c-2.712.07-4.957 2.318-5.022 5.04v3.462c.409 3.206 2.925 4.874 5.633 4.814l18.554.06-24.132 23.928c-2.62 2.626-2.62 6.89 0 9.524a6.694 6.694 0 0 0 9.496 0l24.155-23.79-.155 18.866c-.06 2.722 2.094 5.093 4.801 5.025h3.65c2.72-.069 4.962-1.685 5.022-4.406l.141-34.956c0-.05-.182-.082-.182-.136l.262-2.46c.03-1.366-.286-2.592-1.166-3.46h-.001zM80.08 47.397a4.62 4.62 0 0 0 3.443 1.374l2.45-.054c.055 0 .088-.02.143-.028l35.08.21c2.712-.062 4.953-2.312 5.021-5.033l.009-3.463c-.417-3.211-2.937-5.084-5.64-5.025l-18.615-.073 23.917-23.715c2.63-2.623 2.63-6.879.008-9.513a6.691 6.691 0 0 0-9.494 0L92.251 26.016l.155-19.312c.065-2.713-2.097-5.085-4.802-5.025h-3.45c-2.713.069-4.954 1.693-5.022 4.406l-.139 35.247c0 .054.18.088.18.136l-.267 2.465c-.028 1.366.288 2.588 1.174 3.463v.001z"/></svg> |
src/icons/svg/fullscreen.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M38.47 52L52 38.462l-23.648-23.67L43.209 0H.035L0 43.137l14.757-14.865L38.47 52zm74.773 47.726L89.526 76 76 89.536l23.648 23.672L84.795 128h43.174L128 84.863l-14.757 14.863zM89.538 52l23.668-23.648L128 43.207V.038L84.866 0 99.73 14.76 76 38.472 89.538 52zM38.46 76L14.792 99.651 0 84.794v43.173l43.137.033-14.865-14.757L52 89.53 38.46 76z"/></svg> |
src/icons/svg/guide.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M1.482 70.131l36.204 16.18 69.932-65.485-61.38 70.594 46.435 18.735c1.119.425 2.397-.17 2.797-1.363v-.085L127.998.047 1.322 65.874c-1.12.597-1.519 1.959-1.04 3.151.32.511.72.937 1.2 1.107zm44.676 57.821L64.22 107.26l-18.062-7.834v28.527z"/></svg> |
src/icons/svg/icon.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M115.147.062a13 13 0 0 1 4.94.945c1.55.63 2.907 1.526 4.069 2.688a13.148 13.148 0 0 1 2.761 4.069c.678 1.55 1.017 3.245 1.017 5.086v102.3c0 3.681-1.187 6.733-3.56 9.155-2.373 2.422-5.352 3.633-8.937 3.633H12.992c-3.875 0-7-1.26-9.373-3.779-2.373-2.518-3.56-5.667-3.56-9.445V12.704c0-3.39 1.163-6.345 3.488-8.863C5.872 1.32 8.972.062 12.847.062h102.3zM81.434 109.047c1.744 0 3.003-.412 3.778-1.235.775-.824 1.163-1.914 1.163-3.27 0-1.26-.388-2.325-1.163-3.197-.775-.872-2.034-1.307-3.778-1.307H72.57c.097-.194.145-.485.145-.872V27.09h9.01c1.743 0 2.954-.436 3.633-1.308.678-.872 1.017-1.938 1.017-3.197 0-1.26-.34-2.325-1.017-3.197-.679-.872-1.89-1.308-3.633-1.308H46.268c-1.743 0-2.954.436-3.632 1.308-.678.872-1.018 1.938-1.018 3.197 0 1.26.34 2.325 1.018 3.197.678.872 1.889 1.308 3.632 1.308h8.138v72.075c0 .193.024.339.073.436.048.096.072.242.072.436H46.56c-1.744 0-3.003.435-3.778 1.307-.775.872-1.163 1.938-1.163 3.197 0 1.356.388 2.446 1.163 3.27.775.823 2.034 1.235 3.778 1.235h34.875z"/></svg> |
src/icons/svg/international.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M83.287 103.01c-1.57-3.84-6.778-10.414-15.447-19.548-2.327-2.444-2.182-4.306-1.338-9.862v-.64c.553-3.81 1.513-6.05 14.313-8.087 6.516-1.018 8.203 1.57 10.589 5.178l.785 1.193a12.625 12.625 0 0 0 6.43 5.207c1.134.524 2.53 1.164 4.421 2.24 4.596 2.53 4.596 5.41 4.596 11.753v.727a26.91 26.91 0 0 1-5.178 17.454 59.055 59.055 0 0 1-19.025 11.026c3.49-6.546.814-14.313 0-16.553l-.146-.087zM64 5.12a58.502 58.502 0 0 1 25.484 5.818 54.313 54.313 0 0 0-12.859 10.327c-.93 1.28-1.716 2.473-2.472 3.579-2.444 3.694-3.637 5.352-5.818 5.614a25.105 25.105 0 0 1-4.219 0c-4.276-.29-10.094-.64-11.956 4.422-1.193 3.23-1.396 11.956 2.444 16.495.66 1.077.778 2.4.32 3.578a7.01 7.01 0 0 1-2.066 3.229 18.938 18.938 0 0 1-2.909-2.91 18.91 18.91 0 0 0-8.32-6.603c-1.25-.349-2.647-.64-3.985-.93-3.782-.786-8.03-1.688-9.019-3.812a14.895 14.895 0 0 1-.727-5.818 21.935 21.935 0 0 0-1.396-9.25 8.873 8.873 0 0 0-5.557-4.946A58.705 58.705 0 0 1 64 5.12zM0 64c0 35.346 28.654 64 64 64 35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64z"/></svg> |
src/icons/svg/language.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M84.742 36.8c2.398 7.2 5.595 12.8 11.19 18.4 4.795-4.8 7.992-11.2 10.39-18.4h-21.58zm-52.748 40h20.78l-10.39-28-10.39 28z"/><path d="M111.916 0H16.009C7.218 0 .025 7.2.025 16v96c0 8.8 7.193 16 15.984 16h95.907c8.791 0 15.984-7.2 15.984-16V16c0-8.8-6.394-16-15.984-16zM72.754 103.2c-1.598 1.6-3.197 1.6-4.795 1.6-.8 0-2.398 0-3.197-.8-.8-.8-1.599 0-1.599-.8s-.799-1.6-1.598-3.2c-.8-1.6-.8-2.4-1.599-4l-3.196-8.8H28.797L25.6 96c-1.598 3.2-2.398 5.6-3.197 7.2-.8 1.6-2.398 1.6-4.795 1.6-1.599 0-3.197-.8-4.796-1.6-1.598-1.6-2.397-2.4-2.397-4 0-.8 0-1.6.799-3.2.8-1.6.8-2.4 1.598-4l17.583-44.8c.8-1.6.8-3.2 1.599-4.8.799-1.6 1.598-3.2 2.397-4 .8-.8 1.599-2.4 3.197-3.2 1.599-.8 3.197-.8 4.796-.8 1.598 0 3.196 0 4.795.8 1.598.8 2.398 1.6 3.197 3.2.799.8 1.598 2.4 2.397 4 .8 1.6 1.599 3.2 2.398 5.6l17.583 44c1.598 3.2 2.398 5.6 2.398 7.2-.8.8-1.599 2.4-2.398 4zM116.711 72c-8.791-3.2-15.185-7.2-20.78-12-5.594 5.6-12.787 9.6-21.579 12l-2.397-4c8.791-2.4 15.984-5.6 21.579-11.2C87.939 51.2 83.144 44 81.545 36h-7.992v-3.2h21.58c-1.6-2.4-3.198-5.6-4.796-8l2.397-.8c1.599 2.4 3.997 5.6 5.595 8.8h19.98v4h-7.992c-2.397 8-6.393 15.2-11.189 20 5.595 4.8 11.988 8.8 20.78 11.2l-3.197 4z"/></svg> |
src/icons/svg/list.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M1.585 12.087c0 6.616 3.974 11.98 8.877 11.98 4.902 0 8.877-5.364 8.877-11.98 0-6.616-3.975-11.98-8.877-11.98-4.903 0-8.877 5.364-8.877 11.98zM125.86.107H35.613c-1.268 0-2.114 1.426-2.114 2.852v18.255c0 1.712 1.057 2.853 2.114 2.853h90.247c1.268 0 2.114-1.426 2.114-2.853V2.96c0-1.711-1.057-2.852-2.114-2.852zM.106 62.86c0 6.615 3.974 11.979 8.876 11.979 4.903 0 8.877-5.364 8.877-11.98 0-6.616-3.974-11.98-8.877-11.98-4.902 0-8.876 5.364-8.876 11.98zM124.17 50.88H33.921c-1.268 0-2.114 1.425-2.114 2.851v18.256c0 1.711 1.057 2.852 2.114 2.852h90.247c1.268 0 2.114-1.426 2.114-2.852V53.73c0-1.426-.846-2.852-2.114-2.852zM.106 115.913c0 6.616 3.974 11.98 8.876 11.98 4.903 0 8.877-5.364 8.877-11.98 0-6.616-3.974-11.98-8.877-11.98-4.902 0-8.876 5.364-8.876 11.98zm124.064-11.98H33.921c-1.268 0-2.114 1.426-2.114 2.853v18.255c0 1.711 1.057 2.852 2.114 2.852h90.247c1.268 0 2.114-1.426 2.114-2.852v-18.255c0-1.427-.846-2.853-2.114-2.853z"/></svg> |
src/icons/svg/lock.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M119.88 49.674h-7.987V39.52C111.893 17.738 90.45.08 63.996.08 37.543.08 16.1 17.738 16.1 39.52v10.154H8.113c-4.408 0-7.987 2.94-7.987 6.577v65.13c0 3.637 3.57 6.577 7.987 6.577H119.88c4.407 0 7.987-2.94 7.987-6.577v-65.13c-.008-3.636-3.58-6.577-7.987-6.577zm-23.953 0H32.065V39.52c0-14.524 14.301-26.295 31.931-26.295 17.63 0 31.932 11.777 31.932 26.295v10.153z"/></svg> |
src/icons/svg/message.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M0 20.967v59.59c0 11.59 8.537 20.966 19.075 20.966h28.613l1 26.477L76.8 101.523h32.125c10.538 0 19.075-9.377 19.075-20.966v-59.59C128 9.377 119.463 0 108.925 0h-89.85C8.538 0 0 9.377 0 20.967zm82.325 33.1c0-5.524 4.013-9.935 9.037-9.935 5.026 0 9.038 4.41 9.038 9.934 0 5.524-4.025 9.934-9.038 9.934-5.024 0-9.037-4.41-9.037-9.934zm-27.613 0c0-5.524 4.013-9.935 9.038-9.935s9.037 4.41 9.037 9.934c0 5.524-4.025 9.934-9.037 9.934-5.025 0-9.038-4.41-9.038-9.934zm-27.1 0c0-5.524 4.013-9.935 9.038-9.935s9.038 4.41 9.038 9.934c0 5.524-4.026 9.934-9.05 9.934-5.013 0-9.025-4.41-9.025-9.934z"/></svg> |
src/icons/svg/money.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M54.122 127.892v-28.68H7.513V87.274h46.609v-12.4H7.513v-12.86h38.003L.099 0h22.6l32.556 45.07c3.617 5.144 6.44 9.611 8.487 13.385 1.788-3.05 4.89-7.779 9.301-14.186L103.93 0h24.01L82.385 62.013h38.34v12.862h-46.41v12.4h46.41v11.937h-46.41v28.68H54.123z"/></svg> |
src/icons/svg/pdf.svg
File was created | 1 | <svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="128" height="128"><path d="M869.073 277.307H657.111V65.344l211.962 211.963zm-238.232 26.27V65.344l-476.498-.054v416.957h714.73v-178.67H630.841zm-335.836 360.57c-5.07-3.064-10.944-5.133-17.61-6.201-6.67-1.064-13.603-1.6-20.81-1.6h-48.821v85.641h48.822c7.206 0 14.14-.532 20.81-1.6 6.665-1.065 12.54-3.133 17.609-6.202 5.064-3.063 9.134-7.406 12.208-13.007 3.065-5.602 4.6-12.937 4.6-22.011 0-9.07-1.535-16.408-4.6-22.01-3.074-5.603-7.144-9.94-12.208-13.01zM35.82 541.805v416.904h952.358V541.805H35.821zm331.421 191.179c-3.6 11.071-9.343 20.879-17.209 29.413-7.874 8.542-18.078 15.408-30.617 20.61-12.544 5.206-27.747 7.807-45.621 7.807h-66.036v102.45h-62.831V607.517h128.867c17.874 0 33.077 2.6 45.62 7.802 12.541 5.207 22.745 12.076 30.618 20.615 7.866 8.538 13.604 18.277 17.21 29.212 3.6 10.943 5.401 22.278 5.401 34.018 0 11.477-1.8 22.752-5.402 33.819zM644.9 806.417c-5.343 17.61-13.408 32.818-24.212 45.627-10.807 12.803-24.283 22.879-40.423 30.213-16.146 7.343-35.155 11.007-57.03 11.007h-123.26V607.518h123.26c18.41 0 35.552 2.941 51.428 8.808 15.873 5.869 29.618 14.671 41.22 26.412 11.608 11.744 20.674 26.411 27.217 44.02 6.535 17.61 9.803 38.288 9.803 62.035 0 20.81-2.67 40.02-8.003 57.624zm245.362-146.07h-138.07v66.03h119.66v48.829h-119.66v118.058h-62.83V607.518h200.9v52.829h-.001zm-318.2 25.611c-6.402-8.266-14.877-14.604-25.412-19.01-10.544-4.402-23.551-6.602-39.019-6.602h-44.825v180.088h56.029c9.07 0 17.872-1.463 26.415-4.401 8.535-2.932 16.14-7.802 22.812-14.609 6.665-6.8 12.007-15.667 16.007-26.61 4.003-10.94 6.003-24.275 6.003-40.021 0-14.408-1.4-27.416-4.202-39.019-2.8-11.607-7.406-21.542-13.808-29.816zm0 0"/></svg> |
src/icons/svg/people.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M104.185 95.254c8.161 7.574 13.145 17.441 13.145 28.28 0 1.508-.098 2.998-.285 4.466h-10.784c.238-1.465.403-2.948.403-4.465 0-8.983-4.36-17.115-11.419-23.216C86 104.66 75.355 107.162 64 107.162c-11.344 0-21.98-2.495-31.22-6.83-7.064 6.099-11.444 14.218-11.444 23.203 0 1.517.165 3 .403 4.465H10.955a35.444 35.444 0 0 1-.285-4.465c0-10.838 4.974-20.713 13.127-28.291C9.294 85.42.003 70.417.003 53.58.003 23.99 28.656.001 64 .001s63.997 23.988 63.997 53.58c0 16.842-9.299 31.85-23.812 41.673zM64 36.867c-29.454 0-53.33-10.077-53.33 15.342 0 25.418 23.876 46.023 53.33 46.023 29.454 0 53.33-20.605 53.33-46.023 0-25.419-23.876-15.342-53.33-15.342zm24.888 25.644c-3.927 0-7.111-2.665-7.111-5.953 0-3.288 3.184-5.954 7.11-5.954 3.928 0 7.111 2.666 7.111 5.954s-3.183 5.953-7.11 5.953zm-3.556 16.372c0 4.11-9.55 7.442-21.332 7.442-11.781 0-21.332-3.332-21.332-7.442 0-1.06.656-2.064 1.8-2.976 3.295 2.626 10.79 4.465 19.532 4.465 8.743 0 16.237-1.84 19.531-4.465 1.145.912 1.801 1.916 1.801 2.976zm-46.22-16.372c-3.927 0-7.11-2.665-7.11-5.953 0-3.288 3.183-5.954 7.11-5.954 3.927 0 7.111 2.666 7.111 5.954s-3.184 5.953-7.11 5.953z"/></svg> |
src/icons/svg/peoples.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M95.648 118.762c0 5.035-3.563 9.121-7.979 9.121H7.98c-4.416 0-7.979-4.086-7.979-9.121C0 100.519 15.408 83.47 31.152 76.75c-9.099-6.43-15.216-17.863-15.216-30.987v-9.128c0-20.16 14.293-36.518 31.893-36.518s31.894 16.358 31.894 36.518v9.122c0 13.137-6.123 24.556-15.216 30.993 15.738 6.726 31.141 23.769 31.141 42.012z"/><path d="M106.032 118.252h15.867c3.376 0 6.101-3.125 6.101-6.972 0-13.957-11.787-26.984-23.819-32.123 6.955-4.919 11.638-13.66 11.638-23.704v-6.985c0-15.416-10.928-27.926-24.39-27.926-1.674 0-3.306.193-4.89.561 1.936 4.713 3.018 9.974 3.018 15.526v9.121c0 13.137-3.056 23.111-11.066 30.993 14.842 4.41 27.312 23.42 27.541 41.509z"/></svg> |
src/icons/svg/qq.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M18.448 57.545l-.244-.744-.198-.968-.132-.53v-2.181l.236-.859.24-.908.317-.953.428-1.06.561-1.103.794-1.104v-.773l.077-.724.123-.984.34-1.106.313-1.194.25-.548.289-.511.371-.569.405-.423v-2.73l.234-1.407.236-1.633.42-1.955.577-2.035.43-1.118.426-1.217.468-1.135.559-1.216.57-1.332.655-1.247.737-1.331.929-1.33.43-.762.457-.624.995-1.406 1.025-1.403 1.163-1.444 1.246-1.405 1.352-1.384 1.41-1.423 1.708-1.536 1.083-.934 1.322-1.008 1.34-.89 1.448-.855 1.392-.76 1.57-.63 1.667-.775 1.657-.532 1.653-.552 1.787-.548 1.785-.417 1.876-.347L59.128.68l1.879-.245 1.876-.252 2.002-.106h5.912l1.97.243 1.981.231 2.019.207 1.874.441 1.979.413 1.857.475 2.035.53 1.862.646 1.782.738 1.904.78 1.736.853 1.689.95 1.655 1.044 1.425.971.662.548.693.401 1.323 1.1 1.115 1.064 1.112 1.1 1.083 1.214.894 1.178 1.064 1.217.74 1.306.752 1.162.798 1.352.661 1.175 1.113 2.489.546 1.286.428 1.192.428 1.294.384 1.217.267 1.047.347 1.231.607 2.198.388 1.924.253 1.861.217 1.497.342 2.28.077.362.274.41.737 1.18.473.8.42.832.534.892.472 1.07.307 1.093.334 1.2.252 1.232.115.605.106.746v.648l-.106.643v.8l-.192.774-.35 1.5-.403.76-.299.852v.213l.142.264.4.623 1.746 2.53 1.377 1.9.66 1.267.889 1.389.774 1.52.893 1.627.894 1.828 1.006 2.069.567 1.268.518 1.239.447 1.307.44 1.175.336 1.235.342 1.16.432 2.261.343 2.31.235 2.05v2.891l-.158 1.025-.226 1.768-.308 1.59-.48 1.44-.18.588-.336.707-.28.493-.375.607-.33.383-.42.494-.375.4-.401.34-.48.207-.432.207-.355.114h-.543l-.346-.114-.66-.32-.302-.212-.317-.223-.347-.304-.35-.342-.579-.63-.684-.89-.539-.917-.538-.734-.526-.855-.741-1.517-.833-1.579-.098-.055h-.138l-.338.247-.196.415-.326.516-.567 1.533-.856 2.182-1.096 2.626-.824 1.308-.864 1.366-1.027 1.536-1.09 1.503-.557.68-.676.743-1.555 1.497.136.135.21.214.777.446 3.235 1.524 1.41.779 1.347.756 1.332.953 1.187.982.574.443.432.511.445.593.367.643.198.533.242.64.105.554.115.647-.115.433v.44l-.105.454-.242.415-.092.325-.22.394-.587.784-.543.627-.42.47-.35.348-.893.638-1.01.556-1.077.532-1.155.511-1.287.495-.693.207-.608.167-1.496.342-1.545.325-1.552.323-1.689.27-1.74.072-1.785.21h-5.539l-1.998-.114-1.86-.168-2.005-.27-1.99-.209-2.095-.286-2.03-.495-1.981-.374-1.968-.552-2.019-.707-1.98-.585-1.044-.342-.927-.323-.586-.223-.582-.12h-1.647l-1.904-.131-.962-.096-1.24-.135-.795.705-1.085.665-1.471.701-1.628.875-.99.475-1.033.376-2.281.914-1.24.305-1.3.343-1.803.344-1.13.086-1.193.1-1.246.135-1.45.053h-5.926l-3.346-.053-3.25-.321-1.644-.23-1.589-.23-1.546-.227-1.547-.305-1.442-.456-1.434-.325-1.294-.51-1.223-.474-1.142-.533-.99-.583-.984-.71-.336-.343-.44-.415-.334-.362-.3-.417-.278-.415-.215-.42-.311-.89-.109-.46-.138-.51v-.473l.138-.533v-.53l.109-.53v-1.069l.052-.564.259-.647.215-.646.39-.779.286-.3.236-.348.615-.738.49-.38.464-.266.428-.338.676-.21.543-.324.676-.341.77-.227.775-.231.897-.192.85-.11 1.008-.13 1.093-.081.284-.092h.063l.137-.115v-.13l-.2-.266-.58-.27-1.45-1.231-.975-.761-1.127-.967-1.136-1.082-1.181-1.382-1.36-1.558-.508-.843-.672-.87-.58-1.007-.522-1.1-.704-1.047-.459-1.194-.547-1.192-.546-1.33-.397-1.273-.378-1.575-.112-.057h-.115l-.059-.113h-.14l-.23.113-.114.057-.158.264-.057.321-.119.286-.206.477-.664 1.157-.345.701-.546.612-.58.736-.641.816-.677.724-.795.701-.734.658-.814.524-.89.546-.855.325-1.008.247-.99.095h-.233l-.228-.095-.18-.384-.29-.188-.38-.912-.237-.493-.255-.707-.21-.734-.113-.724-.313-1.648-.12-.972v-3.185l.12-2.379.196-1.214.23-1.252.21-1.347.374-1.254.42-1.443.431-1.407.578-1.448.545-1.38.754-1.4.699-1.52.855-1.425 1.006-1.538 1.023-1.382 1.069-1.538.891-1.071 1.142-1.227 1.202-1.237.56-.59.678-.662.985-.836 1.012-.853 1.647-1.446 1.242-.889z"/></svg> |
src/icons/svg/search.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M124.884 109.812L94.256 79.166c-.357-.357-.757-.629-1.129-.914a50.366 50.366 0 0 0 8.186-27.59C101.327 22.689 78.656 0 50.67 0 22.685 0 0 22.688 0 50.663c0 27.989 22.685 50.663 50.656 50.663 10.186 0 19.643-3.03 27.6-8.201.286.385.557.771.9 1.114l30.628 30.632a10.633 10.633 0 0 0 7.543 3.129c2.728 0 5.457-1.043 7.543-3.115 4.171-4.157 4.171-10.915.014-15.073M50.671 85.338C31.557 85.338 16 69.78 16 50.663c0-19.102 15.557-34.661 34.67-34.661 19.115 0 34.657 15.559 34.657 34.675 0 19.102-15.557 34.661-34.656 34.661"/></svg> |
src/icons/svg/shopping.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M42.913 101.36c1.642 0 3.198.332 4.667.996a12.28 12.28 0 0 1 3.89 2.772c1.123 1.184 1.987 2.582 2.592 4.193.605 1.612.908 3.318.908 5.118 0 1.8-.303 3.507-.908 5.118-.605 1.611-1.469 3.01-2.593 4.194a13.3 13.3 0 0 1-3.889 2.843 10.582 10.582 0 0 1-4.667 1.066c-1.729 0-3.306-.355-4.732-1.066a13.604 13.604 0 0 1-3.825-2.843c-1.123-1.185-1.988-2.583-2.593-4.194a14.437 14.437 0 0 1-.907-5.118c0-1.8.302-3.506.907-5.118.605-1.61 1.47-3.009 2.593-4.193a12.515 12.515 0 0 1 3.825-2.772c1.426-.664 3.003-.996 4.732-.996zm53.932.285c1.643 0 3.22.331 4.733.995a11.386 11.386 0 0 1 3.889 2.772c1.08 1.185 1.945 2.583 2.593 4.194.648 1.61.972 3.317.972 5.118 0 1.8-.324 3.506-.972 5.117-.648 1.611-1.513 3.01-2.593 4.194a12.253 12.253 0 0 1-3.89 2.843 11 11 0 0 1-4.732 1.066 10.58 10.58 0 0 1-4.667-1.066 12.478 12.478 0 0 1-3.824-2.843c-1.08-1.185-1.945-2.583-2.593-4.194a13.581 13.581 0 0 1-.973-5.117c0-1.801.325-3.507.973-5.118.648-1.611 1.512-3.01 2.593-4.194a11.559 11.559 0 0 1 3.824-2.772 11.212 11.212 0 0 1 4.667-.995zm21.781-80.747c2.42 0 4.3.355 5.64 1.066 1.34.71 2.29 1.587 2.852 2.63a6.427 6.427 0 0 1 .778 3.34c-.044 1.185-.195 2.204-.454 3.057-.26.853-.8 2.606-1.62 5.26a589.268 589.268 0 0 1-2.788 8.743 1236.373 1236.373 0 0 0-3.047 9.453c-.994 3.128-1.75 5.592-2.269 7.393-1.123 3.79-2.55 6.42-4.278 7.89-1.728 1.469-3.846 2.203-6.352 2.203H39.023l1.945 12.795h65.342c4.148 0 6.223 1.943 6.223 5.828 0 1.896-.41 3.53-1.232 4.905-.821 1.374-2.442 2.061-4.862 2.061H38.505c-1.729 0-3.176-.426-4.343-1.28-1.167-.852-2.14-1.966-2.917-3.34a21.277 21.277 0 0 1-1.88-4.478 44.128 44.128 0 0 1-1.102-4.55c-.087-.568-.324-1.942-.713-4.122-.39-2.18-.865-4.904-1.426-8.174l-1.88-10.947c-.692-4.027-1.383-8.079-2.075-12.154-1.642-9.572-3.5-20.234-5.574-31.986H6.87c-1.296 0-2.377-.356-3.24-1.067a9.024 9.024 0 0 1-2.14-2.558 10.416 10.416 0 0 1-1.167-3.2C.108 8.53 0 7.488 0 6.54c0-1.896.583-3.46 1.75-4.69C2.917.615 4.494 0 6.482 0h13.095c1.728 0 3.111.284 4.148.853 1.037.569 1.858 1.28 2.463 2.132a8.548 8.548 0 0 1 1.297 2.701c.26.948.475 1.754.648 2.417.173.758.346 1.825.519 3.199.173 1.374.345 2.772.518 4.193.26 1.706.519 3.507.778 5.403h88.678z"/></svg> |
src/icons/svg/size.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M0 54.857h54.796v18.286H36.531V128H18.265V73.143H0V54.857zm127.857-36.571H91.935V128H72.456V18.286H36.534V0h91.326l-.003 18.286z"/></svg> |
src/icons/svg/skill.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M31.652 93.206h33.401c1.44 2.418 3.077 4.663 4.93 6.692h-38.33v-6.692zm0-10.586h28.914a44.8 44.8 0 0 1-1.264-6.688h-27.65v6.688zm0-17.27H59.39c.288-2.286.714-4.532 1.34-6.687H31.65v6.687h.003zm53.913 44.84v5.85c0 2.798-2.095 5.075-4.667 5.075h-70.07c-2.576 0-4.663-2.277-4.663-5.075V31.26l23.22-20.96v22.25H17.16v6.688h18.39V6.688h45.348c2.576 0 4.667 2.277 4.667 5.066v20.009c1.987-.675 4.053-1.128 6.17-1.445v-18.56C91.738 5.28 86.874 0 80.902 0H31.15L0 28.118v87.917c0 6.48 4.859 11.759 10.832 11.759h70.07c5.974 0 10.837-5.27 10.837-11.759v-4.41c-2.117-.312-4.183-.765-6.17-1.435h-.004zM23.279 58.667h-7.96v6.688h7.96v-6.688zm-7.956 41.23h7.96v-6.691h-7.96v6.692zm7.956-23.96h-7.96v6.687h7.96v-6.688zm89.718-15.042l-4.896-4.07-12.447 17.613-11.19-9.305-3.762 5.311 16.091 13.38 16.204-22.929zM128 70.978c0-18.632-13.97-33.782-31.147-33.782-17.168 0-31.135 15.155-31.135 33.782 0 18.628 13.97 33.783 31.135 33.783 17.172 0 31.143-15.15 31.143-33.783H128zm-6.17 0c0 14.933-11.203 27.1-24.981 27.1-13.77 0-24.987-12.158-24.987-27.1 0-14.941 11.195-27.099 24.987-27.099 13.778 0 24.982 12.158 24.982 27.1z"/></svg> |
src/icons/svg/star.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M70.66 4.328l14.01 29.693c1.088 2.29 3.177 3.882 5.603 4.25l31.347 4.76c6.087.926 8.528 8.756 4.117 13.247L103.05 79.395c-1.75 1.78-2.544 4.352-2.132 6.867l5.352 32.641c1.043 6.337-5.33 11.182-10.778 8.19l-28.039-15.409a7.13 7.13 0 0 0-6.91 0l-28.039 15.41c-5.448 2.99-11.821-1.854-10.777-8.19l5.352-32.642c.415-2.515-.387-5.088-2.136-6.867L2.264 56.278C-2.146 51.787.286 43.957 6.38 43.031l31.343-4.76c2.419-.368 4.51-1.96 5.595-4.25L57.334 4.328c2.728-5.77 10.605-5.77 13.325 0z"/></svg> |
src/icons/svg/tab.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M78.921.052H49.08c-1.865 0-3.198 1.599-3.198 3.464v6.661c0 1.865 1.6 3.464 3.198 3.464h29.84c1.865 0 3.198-1.599 3.198-3.464V3.516C82.385 1.65 80.786.052 78.92.052zm45.563 0H94.642c-1.865 0-3.464 1.599-3.464 3.464v6.661c0 1.865 1.599 3.464 3.464 3.464h29.842c1.865-.266 3.464-1.599 3.464-3.464V3.516c0-1.865-1.599-3.464-3.464-3.464zm0 22.382H40.02c-1.866 0-3.464-1.599-3.464-3.464V3.516c0-1.865-1.599-3.464-3.464-3.464H3.516C1.65.052.052 1.651.052 3.516V124.75c0 1.598 1.599 3.197 3.464 3.197h120.968c1.865 0 3.464-1.599 3.464-3.464V25.898c0-1.865-1.599-3.464-3.464-3.464z"/></svg> |
src/icons/svg/theme.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M125.5 36.984L95.336 2.83C93.735 1.018 91.565 0 89.3 0c-2.263 0-4.433 1.018-6.033 2.83l-3.786 4.286c-1.6 1.812-3.77 2.83-6.032 2.831H54.553c-2.263 0-4.434-1.018-6.033-2.83L44.734 2.83C43.134 1.018 40.964 0 38.701 0c-2.263 0-4.434 1.018-6.034 2.83L2.5 36.984C.9 38.796 0 41.254 0 43.815c0 2.562.899 5.02 2.5 6.831L14.565 64.31c2.178 2.468 5.367 3.403 8.33 2.444 1.35-.435 2.709.592 2.709 2.18v49.407c0 5.313 3.84 9.66 8.532 9.66h59.726c4.693 0 8.532-4.347 8.532-9.66V68.934c0-1.59 1.36-2.616 2.71-2.181 2.962.96 6.15.024 8.329-2.444L125.5 50.646c1.6-1.811 2.499-4.269 2.499-6.83 0-2.563-.899-5.02-2.5-6.832z"/></svg> |
src/icons/svg/tree-table.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M44.8 0h79.543C126.78 0 128 1.422 128 4.267v23.466c0 2.845-1.219 4.267-3.657 4.267H44.8c-2.438 0-3.657-1.422-3.657-4.267V4.267C41.143 1.422 42.362 0 44.8 0zm22.857 48h56.686c2.438 0 3.657 1.422 3.657 4.267v23.466c0 2.845-1.219 4.267-3.657 4.267H67.657C65.22 80 64 78.578 64 75.733V52.267C64 49.422 65.219 48 67.657 48zm0 48h56.686c2.438 0 3.657 1.422 3.657 4.267v23.466c0 2.845-1.219 4.267-3.657 4.267H67.657C65.22 128 64 126.578 64 123.733v-23.466C64 97.422 65.219 96 67.657 96zM50.286 68.267c2.02 0 3.657-1.91 3.657-4.267 0-2.356-1.638-4.267-3.657-4.267H17.37V32h6.4c2.02 0 3.658-1.91 3.658-4.267V4.267C27.429 1.91 25.79 0 23.77 0H3.657C1.637 0 0 1.91 0 4.267v23.466C0 30.09 1.637 32 3.657 32h6.4v80c0 2.356 1.638 4.267 3.657 4.267h36.572c2.02 0 3.657-1.91 3.657-4.267 0-2.356-1.638-4.267-3.657-4.267H17.37V68.267h32.915z"/></svg> |
src/icons/svg/wechat.svg
File was created | 1 | <svg width="128" height="110" xmlns="http://www.w3.org/2000/svg"><path d="M86.635 33.334c1.467 0 2.917.113 4.358.283C87.078 14.392 67.58.111 45.321.111 20.44.111.055 17.987.055 40.687c0 13.104 6.781 23.863 18.115 32.209l-4.527 14.352 15.82-8.364c5.666 1.182 10.207 2.395 15.858 2.395 1.42 0 2.829-.073 4.227-.189-.886-3.19-1.398-6.53-1.398-9.996 0-20.845 16.98-37.76 38.485-37.76zm-24.34-12.936c3.407 0 5.665 2.363 5.665 5.954 0 3.576-2.258 5.97-5.666 5.97-3.392 0-6.795-2.395-6.795-5.97 0-3.591 3.403-5.954 6.795-5.954zM30.616 32.323c-3.393 0-6.818-2.395-6.818-5.971 0-3.591 3.425-5.954 6.818-5.954 3.392 0 5.65 2.363 5.65 5.954 0 3.576-2.258 5.97-5.65 5.97z"/><path d="M127.945 70.52c0-19.075-18.108-34.623-38.448-34.623-21.537 0-38.5 15.548-38.5 34.623 0 19.108 16.963 34.622 38.5 34.622 4.508 0 9.058-1.2 13.584-2.395l12.414 7.167-3.404-11.923c9.087-7.184 15.854-16.712 15.854-27.471zm-50.928-5.97c-2.254 0-4.53-2.362-4.53-4.773 0-2.378 2.276-4.771 4.53-4.771 3.422 0 5.665 2.393 5.665 4.771 0 2.41-2.243 4.773-5.665 4.773zm24.897 0c-2.24 0-4.498-2.362-4.498-4.773 0-2.378 2.258-4.771 4.498-4.771 3.392 0 5.665 2.393 5.665 4.771 0 2.41-2.273 4.773-5.665 4.773z"/></svg> |
src/icons/svg/zip.svg
File was created | 1 | <svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M78.527 116.793c.178.008.348.024.527.024h40.233c4.711-.005 8.53-3.677 8.534-8.21V18.895c-.004-4.532-3.823-8.204-8.534-8.209H79.054c-.179 0-.353.016-.527.024V0L0 10.082v107.406l78.527 10.342v-11.037zm0-101.362c.174-.024.348-.052.527-.052h40.233c2.018 0 3.659 1.578 3.659 3.52v89.713c-.003 1.942-1.64 3.517-3.659 3.519H79.054c-.179 0-.353-.028-.527-.052V15.431zM30.262 75.757l-18.721-.46V72.37l11.3-16.673v-.148l-10.266.164v-4.51l17.504-.44v3.264L18.696 70.76v.144l11.566.176v4.678zm9.419.231l-5.823-.144V50.671l5.823-.144v25.461zm22.255-11.632c-2.168 1.922-5.353 2.76-9.02 2.736-.702.004-1.402-.04-2.097-.131v9.303l-5.997-.148V50.743c1.852-.352 4.473-.647 8.218-.743 3.838-.096 6.608.539 8.48 1.913 1.807 1.306 3.032 3.5 3.032 6.112s-.926 4.833-2.612 6.331h-.004zM53.36 54.45c-.856-.01-1.71.083-2.541.275v7.682c.523.116 1.167.152 2.06.152 3.301-.004 5.36-1.614 5.36-4.314 0-2.425-1.772-3.843-4.875-3.791l-.004-.004zm39.847-37.066h9.564v3.795h-9.564v-3.795zm-9.568 5.68h9.564v3.8h-9.564v-3.8zm9.568 6.216h9.564v3.799h-9.564V29.28zm0 12h9.564v3.794h-9.564V41.28zm-9.568-6.096h9.564v3.795h-9.564v-3.795zm9.472 47.064c2.512 0 4.921-.96 6.697-2.67 1.776-1.708 2.773-4.026 2.772-6.442l-1.748-15.263c0-5.033-2.492-9.112-7.725-9.112-5.232 0-7.72 4.079-7.72 9.112l-1.752 15.263c-.001 2.417.996 4.735 2.773 6.444 1.777 1.71 4.187 2.669 6.7 2.668h.003zm-3.135-16.75h6.27v12.743h-6.27V65.5z"/></svg> |
src/router/index.js
1 | import Vue from 'vue' | 1 | import Vue from 'vue' |
2 | import Router from 'vue-router' | 2 | import Router from 'vue-router' |
3 | 3 | ||
4 | Vue.use(Router) | 4 | Vue.use(Router) |
5 | 5 | ||
6 | /* Layout */ | 6 | /* Layout */ |
7 | import Layout from '@/layout' | 7 | import Layout from '@/layout' |
8 | 8 | ||
9 | /** | 9 | /** |
10 | * Note: sub-menu only appear when route children.length >= 1 | 10 | * Note: sub-menu only appear when route children.length >= 1 |
11 | * Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html | 11 | * Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html |
12 | * | 12 | * |
13 | * hidden: true if set true, item will not show in the sidebar(default is false) | 13 | * hidden: true if set true, item will not show in the sidebar(default is false) |
14 | * alwaysShow: true if set true, will always show the root menu | 14 | * alwaysShow: true if set true, will always show the root menu |
15 | * if not set alwaysShow, when item has more than one children route, | 15 | * if not set alwaysShow, when item has more than one children route, |
16 | * it will becomes nested mode, otherwise not show the root menu | 16 | * it will becomes nested mode, otherwise not show the root menu |
17 | * redirect: noRedirect if set noRedirect will no redirect in the breadcrumb | 17 | * redirect: noRedirect if set noRedirect will no redirect in the breadcrumb |
18 | * name:'router-name' the name is used by <keep-alive> (must set!!!) | 18 | * name:'router-name' the name is used by <keep-alive> (must set!!!) |
19 | * meta : { | 19 | * meta : { |
20 | roles: ['admin','editor'] control the page roles (you can set multiple roles) | 20 | roles: ['admin','editor'] control the page roles (you can set multiple roles) |
21 | title: 'title' the name show in sidebar and breadcrumb (recommend set) | 21 | title: 'title' the name show in sidebar and breadcrumb (recommend set) |
22 | icon: 'svg-name' the icon show in the sidebar | 22 | icon: 'svg-name' the icon show in the sidebar |
23 | breadcrumb: false if set false, the item will hidden in breadcrumb(default is true) | 23 | breadcrumb: false if set false, the item will hidden in breadcrumb(default is true) |
24 | activeMenu: '/example/list' if set path, the sidebar will highlight the path you set | 24 | activeMenu: '/example/list' if set path, the sidebar will highlight the path you set |
25 | } | 25 | } |
26 | */ | 26 | */ |
27 | 27 | ||
28 | /** | 28 | /** |
29 | * constantRoutes | 29 | * constantRoutes |
30 | * a base page that does not have permission requirements | 30 | * a base page that does not have permission requirements |
31 | * all roles can be accessed | 31 | * all roles can be accessed |
32 | */ | 32 | */ |
33 | export const constantRoutes = [{ | 33 | export const constantRoutes = [{ |
34 | path: '/login', | 34 | path: '/login', |
35 | component: () => import('@/views/login/index'), | 35 | component: () => import('@/views/login/index'), |
36 | hidden: true | 36 | hidden: true |
37 | }, | 37 | }, |
38 | |||
39 | { | 38 | { |
40 | path: '/404', | 39 | path: '/404', |
41 | component: () => import('@/views/404'), | 40 | component: () => import('@/views/404'), |
42 | hidden: true | 41 | hidden: true |
43 | }, | 42 | }, |
44 | |||
45 | { | 43 | { |
46 | path: '/', | 44 | path: '/', |
47 | component: Layout, | 45 | component: Layout, |
48 | redirect: '/dashboard', | 46 | redirect: '/dashboard', |
49 | children: [{ | 47 | children: [{ |
50 | path: 'dashboard', | 48 | path: 'dashboard', |
51 | name: 'Dashboard', | 49 | name: 'Dashboard', |
52 | component: () => import('@/views/dashboard/index'), | 50 | component: () => import('@/views/dashboard/index'), |
53 | meta: { | 51 | meta: { |
54 | title: '中控台', | 52 | title: '中控台', |
55 | icon: 'dashboard' | 53 | icon: 'dashboard' |
56 | } | 54 | } |
57 | }] | 55 | }] |
58 | }, | 56 | }, |
59 | { | 57 | { |
60 | path: '/user', | 58 | path: '/user', //用户管理 |
61 | component: Layout, | 59 | component: Layout, |
62 | redirect: '/user/list', | 60 | redirect: '/user/list', |
63 | name: 'user', | 61 | name: 'user', |
64 | meta: { | 62 | meta: { |
65 | title: '用户管理', | 63 | title: '用户管理', |
66 | icon: 'example' | 64 | icon: 'people' |
67 | }, | 65 | }, |
68 | children: [{ | 66 | children: [{ |
69 | path: 'user', | 67 | path: 'user', |
70 | name: 'User', | 68 | name: 'User', |
71 | component: () => import('@/views/table/index'), | 69 | component: () => import('@/views/table/index'), |
72 | meta: { | 70 | meta: { |
73 | title: '用户列表', | 71 | title: '用户列表', |
74 | icon: 'table' | 72 | icon: 'peoples' |
75 | } | ||
76 | }, | ||
77 | { | ||
78 | path: 'tree', | ||
79 | name: 'Table', | ||
80 | component: () => import('@/views/tree/index'), | ||
81 | meta: { | ||
82 | title: 'Tree', | ||
83 | icon: 'tree' | ||
84 | } | 73 | } |
85 | } | 74 | } |
75 | // , | ||
76 | // { | ||
77 | // path: 'tree', | ||
78 | // name: '', | ||
79 | // component: () => import('@/views/tree/index'), | ||
80 | // meta: { | ||
81 | // title: '权限控制', | ||
82 | // icon: 'lock' | ||
83 | // } | ||
84 | // } | ||
86 | ] | 85 | ] |
87 | }, | 86 | }, |
88 | { | 87 | { |
89 | path: '/example', | 88 | path: '/shop', |
90 | component: Layout, | 89 | component: Layout, |
91 | redirect: '/example/table', | ||
92 | name: 'Example', | ||
93 | meta: { | 90 | meta: { |
94 | title: '商家管理', | 91 | title: '商家管理', |
95 | icon: 'example' | 92 | icon: 'shopping' |
96 | }, | 93 | }, |
97 | children: [{ | 94 | children: [{ |
98 | path: 'table', | 95 | path: 'shop', |
99 | name: 'Table', | 96 | name: 'Shop', |
100 | component: () => import('@/views/table/index'), | 97 | component: () => import('@/views/table/index'), |
101 | meta: { | 98 | meta: { |
102 | title: 'Table', | 99 | title: '商家列表', |
103 | icon: 'table' | 100 | icon: 'table' |
104 | } | 101 | } |
105 | }, | 102 | }, |
106 | { | 103 | { |
107 | path: 'tree', | 104 | path: 'tree', |
108 | name: 'Tree', | 105 | name: 'Tree', |
109 | component: () => import('@/views/tree/index'), | 106 | component: () => import('@/views/tree/index'), |
110 | meta: { | 107 | meta: { |
111 | title: 'Tree', | 108 | title: '图片分析', |
112 | icon: 'tree' | 109 | icon: 'chart' |
113 | } | 110 | } |
114 | } | 111 | } |
115 | ] | 112 | ] |
116 | }, | 113 | }, |
117 | { | 114 | { |
118 | path: '/example', | 115 | path: '/prod', |
119 | component: Layout, | 116 | component: Layout, |
120 | redirect: '/example/table', | 117 | redirect: '/prod/table', |
121 | name: 'Example', | 118 | name: 'Prod', |
122 | meta: { | 119 | meta: { |
123 | title: '产品管理', | 120 | title: '产品管理', |
124 | icon: 'example' | 121 | icon: 'tree' |
125 | }, | 122 | }, |
126 | children: [{ | 123 | children: [{ |
127 | path: 'table', | 124 | path: 'table', |
128 | name: 'Table', | 125 | name: 'Tree', |
129 | component: () => import('@/views/table/index'), | ||
130 | meta: { | 126 | meta: { |
131 | title: 'Table', | 127 | title: '成镜', |
132 | icon: 'table' | 128 | icon: 'tree-table' |
133 | } | 129 | }, |
130 | children: [{ | ||
131 | path: 'table', | ||
132 | name: 'tree', | ||
133 | component: () => import('@/views/tree/index'), | ||
134 | meta: { | ||
135 | title: '款式索引', | ||
136 | icon: 'tree-table' | ||
137 | }, | ||
138 | children: [{ | ||
139 | path: 'table', | ||
140 | name: 'Table1', | ||
141 | component: () => import('@/views/table/index'), | ||
142 | meta: { | ||
143 | title: '青春学子风', | ||
144 | icon: 'guide' | ||
145 | } | ||
146 | },{ | ||
147 | path: 'table', | ||
148 | name: 'Table1', | ||
149 | component: () => import('@/views/table/index'), | ||
150 | meta: { | ||
151 | title: '质感哥特风', | ||
152 | icon: 'guide' | ||
153 | } | ||
154 | }] | ||
155 | },{ | ||
156 | path: 'table', | ||
157 | name: 'tree', | ||
158 | component: () => import('@/views/table/index'), | ||
159 | meta: { | ||
160 | title: '颜色索引', | ||
161 | icon: 'tree-table' | ||
162 | } | ||
163 | }] | ||
134 | }, | 164 | }, |
135 | { | 165 | { |
136 | path: 'tree', | 166 | path: 'tree', |
137 | name: 'Tree', | 167 | name: 'Tree', |
138 | component: () => import('@/views/tree/index'), | 168 | component: () => import('@/views/table/index'), |
139 | meta: { | 169 | meta: { |
140 | title: 'Tree', | 170 | title: '镜片', |
141 | icon: 'tree' | 171 | icon: 'tree-table' |
142 | } | 172 | } |
143 | } | 173 | } |
144 | ] | 174 | ] |
145 | }, | 175 | }, |
146 | { | 176 | { |
147 | path: '/example', | 177 | path: '/Meta', |
148 | component: Layout, | 178 | component: Layout, |
149 | redirect: '/example/table', | 179 | redirect: '/meta/table', |
150 | name: 'Example', | 180 | name: 'Meta', |
151 | meta: { | 181 | meta: { |
152 | title: '元管理', | 182 | title: '元管理', |
153 | icon: 'example' | 183 | icon: 'guide' |
154 | }, | 184 | }, |
155 | children: [{ | 185 | children: [{ |
156 | path: 'table', | 186 | path: 'table', |
157 | name: 'Table', | 187 | name: 'Table', |
158 | component: () => import('@/views/table/index'), | 188 | component: () => import('@/views/table/index'), |
159 | meta: { | 189 | meta: { |
160 | title: 'Table', | 190 | title: 'Table', |
161 | icon: 'table' | 191 | icon: 'table' |
162 | } | 192 | } |
163 | }, | 193 | }, |
164 | { | 194 | { |
165 | path: 'tree', | 195 | path: 'tree', |
166 | name: 'Tree', | 196 | name: 'Tree', |
167 | component: () => import('@/views/tree/index'), | 197 | component: () => import('@/views/tree/index'), |
168 | meta: { | 198 | meta: { |
169 | title: 'Tree', | 199 | title: 'Tree', |
170 | icon: 'tree' | 200 | icon: 'tree' |
171 | } | 201 | } |
172 | } | 202 | } |
173 | ] | 203 | ] |
174 | }, | 204 | }, |
175 | { | 205 | { |
176 | path: '/example', | 206 | path: '/trade', |
177 | component: Layout, | 207 | component: Layout, |
178 | redirect: '/example/table', | 208 | redirect: '/example/table', |
179 | name: 'Example', | 209 | name: 'Trade', |
180 | meta: { | 210 | meta: { |
181 | title: '交易管理', | 211 | title: '交易管理', |
182 | icon: 'example' | 212 | icon: 'money' |
183 | }, | 213 | }, |
184 | children: [{ | 214 | children: [{ |
185 | path: 'table', | 215 | path: 'table', |
186 | name: 'Table', | 216 | name: 'Table', |
187 | component: () => import('@/views/table/index'), | 217 | component: () => import('@/views/table/index'), |
188 | meta: { | 218 | meta: { |
189 | title: 'Table', | 219 | title: '成交清单', |
190 | icon: 'table' | 220 | icon: 'table' |
191 | } | 221 | } |
192 | }, | 222 | }, |
193 | { | 223 | { |
194 | path: 'tree', | 224 | path: 'tree', |
195 | name: 'Tree', | 225 | name: 'Tree', |
196 | component: () => import('@/views/tree/index'), | 226 | component: () => import('@/views/tree/index'), |
197 | meta: { | 227 | meta: { |
198 | title: 'Tree', | 228 | title: '未成交清单', |
199 | icon: 'tree' | 229 | icon: 'table' |
200 | } | 230 | } |
201 | } | 231 | } |
202 | ] | 232 | ] |
203 | }, { | 233 | }, { |
204 | path: '/example', | 234 | path: '/recommand', |
205 | component: Layout, | 235 | component: Layout, |
206 | redirect: '/example/table', | 236 | redirect: '/recommand/table', |
207 | name: 'Example', | 237 | name: 'Recommand', |
208 | meta: { | 238 | meta: { |
209 | title: '推荐系统', | 239 | title: '推荐系统', |
210 | icon: 'example' | 240 | icon: 'size' |
211 | }, | 241 | }, |
212 | children: [{ | 242 | children: [{ |
213 | path: 'table', | 243 | path: 'table', |
214 | name: 'Table', | 244 | name: 'Table', |
215 | component: () => import('@/views/table/index'), | 245 | component: () => import('@/views/table/index'), |
216 | meta: { | 246 | meta: { |
217 | title: 'Table', | 247 | title: '推荐系统教学', |
218 | icon: 'table' | 248 | icon: 'table' |
219 | } | ||
220 | }, | ||
221 | { | ||
222 | path: 'tree', | ||
223 | name: 'Tree', | ||
224 | component: () => import('@/views/tree/index'), | ||
225 | meta: { | ||
226 | title: 'Tree', | ||
227 | icon: 'tree' | ||
228 | } | ||
229 | } | 249 | } |
230 | ] | 250 | }] |
231 | }, { | 251 | }, { |
232 | path: '/system', | 252 | path: '/system', |
233 | component: Layout, | 253 | component: Layout, |
234 | redirect: '/system/table', | 254 | redirect: '/system/table', |
235 | name: 'System', | 255 | name: 'System', |
236 | meta: { | 256 | meta: { |
237 | title: '系统设置', | 257 | title: '系统设置', |
238 | icon: 'example' | 258 | icon: 'component' |
239 | }, | 259 | }, |
240 | children: [{ | 260 | children: [{ |
241 | path: 'table', | 261 | path: 'hangye_seting', |
242 | name: 'Table', | 262 | name: 'Hangye', |
243 | component: () => import('@/views/table/index'), | 263 | component: () => import('@/views/table/index'), |
244 | meta: { | 264 | meta: { |
245 | title: '行业设置', | 265 | title: '行业设置', |
246 | icon: 'table' | 266 | icon: 'guide' |
247 | } | 267 | } |
248 | }, | 268 | }, |
249 | { | 269 | { |
250 | path: 'tree', | 270 | path: 'language_seting', |
251 | name: 'Tree', | 271 | name: 'Language', |
252 | component: () => import('@/views/tree/index'), | 272 | component: () => import('@/views/tree/index'), |
253 | meta: { | 273 | meta: { |
254 | title: '语言设置', | 274 | title: '语言设置', |
255 | icon: 'tree' | 275 | icon: 'language' |
256 | } | 276 | } |
257 | }, | 277 | }, |
258 | { | 278 | { |
259 | path: 'tree', | 279 | path: 'money_seting', |
260 | name: 'Tree', | 280 | name: 'Money', |
261 | component: () => import('@/views/tree/index'), | 281 | component: () => import('@/views/tree/index'), |
262 | meta: { | 282 | meta: { |
263 | title: '货币设置', | 283 | title: '货币设置', |
264 | icon: 'tree' | 284 | icon: 'money' |
265 | } | 285 | } |
266 | }, | 286 | }, |
267 | { | 287 | { |
268 | path: 'tree', | 288 | path: 'site_seting', |
269 | name: 'Tree', | 289 | name: 'Site', |
270 | component: () => import('@/views/tree/index'), | 290 | component: () => import('@/views/tree/index'), |
271 | meta: { | 291 | meta: { |
272 | title: '站点类型设置', | 292 | title: '站点类型设置', |
273 | icon: 'tree' | 293 | icon: 'form' |
274 | } | 294 | } |
275 | }, | 295 | }, |
276 | { | 296 | { |
277 | path: 'tree', | 297 | path: 'template_seting', |
278 | name: 'Tree', | 298 | name: 'Template', |
279 | component: () => import('@/views/tree/index'), | 299 | component: () => import('@/views/tree/index'), |
280 | meta: { | 300 | meta: { |
281 | title: '模版设置', | 301 | title: '模版设置', |
282 | icon: 'tree' | 302 | icon: 'theme' |
283 | } | 303 | } |
284 | }, | 304 | }, |
285 | { | 305 | { |
286 | path: 'tree', | 306 | path: 'power_seting', |
287 | name: 'Tree', | 307 | name: 'Power', |
288 | component: () => import('@/views/tree/index'), | 308 | component: () => import('@/views/tree/index'), |
289 | meta: { | 309 | meta: { |
290 | title: '权限设置', | 310 | title: '权限设置', |
291 | icon: 'tree' | 311 | icon: 'password' |
292 | } | 312 | } |
293 | } | 313 | } |
294 | ] | 314 | ] |
295 | }, | 315 | }, |
296 | { | 316 | { |
297 | path: '/form', | 317 | path: '/form', |
298 | component: Layout, | 318 | component: Layout, |
299 | children: [{ | 319 | children: [{ |
300 | path: 'index', | 320 | path: 'index', |
301 | name: 'Form', | 321 | name: 'Form', |
302 | component: () => import('@/views/form/index'), | 322 | component: () => import('@/views/form/index'), |
303 | meta: { | 323 | meta: { |
304 | title: 'Form', | 324 | title: 'Form', |
305 | icon: 'form' | 325 | icon: 'form' |
306 | } | 326 | } |
307 | }] | 327 | }] |
308 | } | 328 | } |
309 | ] | 329 | ] |
310 | 330 | ||
311 | /** | 331 | /** |
312 | * asyncRoutes | 332 | * asyncRoutes |
313 | * the routes that need to be dynamically loaded based on user roles | 333 | * the routes that need to be dynamically loaded based on user roles |
314 | */ | 334 | */ |
315 | export const asyncRoutes = [ | 335 | export const asyncRoutes = [ |
316 | // 404 page must be placed at the end !!! | 336 | // 404 page must be placed at the end !!! |
src/store/modules/permission.js
1 | import { asyncRoutes, constantRoutes } from '@/router' | 1 | import { asyncRoutes, constantRoutes } from '@/router' |
2 | 2 | ||
3 | /** | 3 | /** |
4 | * Use meta.role to determine if the current user has permission | 4 | * Use meta.role to determine if the current user has permission |
5 | * @param roles | 5 | * @param roles |
6 | * @param route | 6 | * @param route |
7 | */ | 7 | */ |
8 | function hasPermission(roles, route) { | 8 | function hasPermission(roles, route) { |
9 | if (route.meta && route.meta.roles) { | 9 | if (route.meta && route.meta.roles) { |
10 | return roles.some(role => route.meta.roles.includes(role)) | 10 | return roles.some(role => route.meta.roles.includes(role)) |
11 | } else { | 11 | } else { |
12 | return true | 12 | return true |
13 | } | 13 | } |
14 | } | 14 | } |
15 | 15 | ||
16 | /** | 16 | /** |
17 | * Filter asynchronous routing tables by recursion | 17 | * Filter asynchronous routing tables by recursion |
18 | * @param routes asyncRoutes | 18 | * @param routes asyncRoutes |
19 | * @param roles | 19 | * @param roles |
20 | */ | 20 | */ |
21 | export function filterAsyncRoutes(routes, roles) { | 21 | export function filterAsyncRoutes(routes, roles) { |
22 | const res = [] | 22 | const res = [] |
23 | |||
24 | routes.forEach(route => { | 23 | routes.forEach(route => { |
25 | const tmp = { ...route } | 24 | const tmp = { ...route } |
26 | if (hasPermission(roles, tmp)) { | 25 | if (hasPermission(roles, tmp)) { |
27 | if (tmp.children) { | 26 | if (tmp.children) { |
28 | tmp.children = filterAsyncRoutes(tmp.children, roles) | 27 | tmp.children = filterAsyncRoutes(tmp.children, roles) |
29 | } | 28 | } |
30 | res.push(tmp) | 29 | res.push(tmp) |
31 | } | 30 | } |
32 | }) | 31 | }) |
33 | 32 | ||
34 | return res | 33 | return res |
35 | } | 34 | } |
36 | 35 | ||
37 | const state = { | 36 | const state = { |
38 | routes: [], | 37 | routes: [], |
39 | addRoutes: [] | 38 | addRoutes: [] |
40 | } | 39 | } |
41 | 40 | ||
42 | const mutations = { | 41 | const mutations = { |
43 | SET_ROUTES: (state, routes) => { | 42 | SET_ROUTES: (state, routes) => { |
44 | state.addRoutes = routes | 43 | state.addRoutes = routes |
45 | state.routes = constantRoutes.concat(routes) | 44 | state.routes = constantRoutes.concat(routes) |
46 | } | 45 | } |
47 | } | 46 | } |
48 | 47 | //根据动作进行判断 | |
49 | const actions = { | 48 | const actions = { |
50 | generateRoutes({ commit }, roles) { | 49 | generateRoutes({ commit }, roles) { |
51 | return new Promise(resolve => { | 50 | return new Promise(resolve => { |
52 | let accessedRoutes | 51 | let accessedRoutes |
53 | if (roles.includes('admin')) { | 52 | if (roles.includes('admin')) { |
53 | console.log('------------generateRoutes----asyncRoutes-----------', asyncRoutes, roles); | ||
54 | accessedRoutes = asyncRoutes || [] | 54 | accessedRoutes = asyncRoutes || [] |
55 | } else { | 55 | } else { |
56 | accessedRoutes = filterAsyncRoutes(asyncRoutes, roles) | 56 | accessedRoutes = filterAsyncRoutes(asyncRoutes, roles) |
57 | accessedRoutes.push({}); | ||
57 | } | 58 | } |
58 | commit('SET_ROUTES', accessedRoutes) | 59 | commit('SET_ROUTES', accessedRoutes) |
59 | resolve(accessedRoutes) | 60 | resolve(accessedRoutes) |
60 | }) | 61 | }) |
61 | } | 62 | } |
62 | } | 63 | } |
63 | 64 | ||
64 | export default { | 65 | export default { |
65 | namespaced: true, | 66 | namespaced: true, |
66 | state, | 67 | state, |
67 | mutations, | 68 | mutations, |
68 | actions | 69 | actions |
69 | } | 70 | } |
src/store/modules/user.js
1 | import { | 1 | import { |
2 | login, | 2 | login, |
3 | logout, | 3 | logout, |
4 | getInfo | 4 | getInfo |
5 | } from '@/api/user' | 5 | } from '@/api/user' |
6 | import { | 6 | import { |
7 | getToken, | 7 | getToken, |
8 | setToken, | 8 | setToken, |
9 | removeToken | 9 | removeToken |
10 | } from '@/utils/auth' | 10 | } from '@/utils/auth' |
11 | import { | 11 | import { |
12 | resetRouter | 12 | resetRouter |
13 | } from '@/router' | 13 | } from '@/router' |
14 | 14 | ||
15 | const getDefaultState = () => { | 15 | const getDefaultState = () => { |
16 | return { | 16 | return { |
17 | token: getToken(), | 17 | token: getToken(), |
18 | name: '', | 18 | name: '', |
19 | avatar: '', | 19 | avatar: '', |
20 | roles: [] | 20 | roles: [] |
21 | } | 21 | } |
22 | } | 22 | } |
23 | 23 | ||
24 | const state = getDefaultState() | 24 | const state = getDefaultState() |
25 | 25 | ||
26 | const mutations = { | 26 | const mutations = { |
27 | RESET_STATE: (state) => { | 27 | RESET_STATE: (state) => { |
28 | Object.assign(state, getDefaultState()) | 28 | Object.assign(state, getDefaultState()) |
29 | }, | 29 | }, |
30 | SET_TOKEN: (state, token) => { | 30 | SET_TOKEN: (state, token) => { |
31 | state.token = token | 31 | state.token = token |
32 | }, | 32 | }, |
33 | SET_NAME: (state, name) => { | 33 | SET_NAME: (state, name) => { |
34 | state.name = name | 34 | state.name = name |
35 | }, | 35 | }, |
36 | SET_AVATAR: (state, avatar) => { | 36 | SET_AVATAR: (state, avatar) => { |
37 | state.avatar = avatar | 37 | state.avatar = avatar |
38 | }, | 38 | }, |
39 | SET_ROLES: (state, roles) => { | 39 | SET_ROLES: (state, roles) => { |
40 | state.roles = roles | 40 | state.roles = roles |
41 | } | 41 | } |
42 | } | 42 | } |
43 | 43 | ||
44 | const actions = { | 44 | const actions = { |
45 | // user login | 45 | // user login |
46 | login({ | 46 | login({ |
47 | commit | 47 | commit |
48 | }, userInfo) { | 48 | }, userInfo) { |
49 | const { | 49 | const { |
50 | username, | 50 | username, |
51 | password | 51 | password |
52 | } = userInfo | 52 | } = userInfo |
53 | return new Promise((resolve, reject) => { | 53 | return new Promise((resolve, reject) => { |
54 | login({ | 54 | login({ |
55 | username: username.trim(), | 55 | username: username.trim(), |
56 | password: password | 56 | password: password |
57 | }).then(response => { | 57 | }).then(response => { |
58 | console.log('返回的数据-- step 3------>', response); | 58 | console.log('返回的数据-- step 3------>', response); |
59 | // const { token, name, id, password } = response | 59 | // const { token, name, id, password } = response |
60 | const {token,name} = response | 60 | const { |
61 | token, | ||
62 | name | ||
63 | } = response | ||
61 | console.log('返回的数据-- step 4------>', response); | 64 | console.log('返回的数据-- step 4------>', response); |
62 | commit('SET_TOKEN', token) | 65 | commit('SET_TOKEN', token) |
63 | setToken(token) | 66 | setToken(token) |
64 | resolve() | 67 | resolve() |
65 | }).catch(error => { | 68 | }).catch(error => { |
66 | console.log('返回的数据-- step 4.1------>', error); | 69 | console.log('返回的数据-- step 4.1------>', error); |
67 | reject(error) | 70 | reject(error) |
68 | }) | 71 | }) |
69 | }) | 72 | }) |
70 | }, | 73 | }, |
71 | 74 | ||
72 | // get user info | 75 | // get user info |
73 | getInfo({ | 76 | getInfo({ |
74 | commit, | 77 | commit, |
75 | state | 78 | state |
76 | }) { | 79 | }) { |
77 | return new Promise((resolve, reject) => { | 80 | return new Promise((resolve, reject) => { |
78 | getInfo(state.token).then(response => { | 81 | getInfo(state.token).then(response => { |
79 | console.log('返回的数据-- step 5------>', state); | 82 | console.log('返回的数据-- step 5------>', state); |
80 | console.log('返回的数据-- step 5.1------>', response); | 83 | console.log('返回的数据-- step 5.1------>', response); |
81 | const {avatar,id,name,password,roles,token} = response | 84 | const { |
85 | avatar, | ||
86 | id, | ||
87 | name, | ||
88 | password, | ||
89 | roles, | ||
90 | token | ||
91 | } = response | ||
82 | if (!roles) { | 92 | if (!roles) { |
83 | reject('Verification failed, please Login again.') | 93 | reject('Verification failed, please Login again.') |
84 | } | 94 | } |
85 | console.error('返回的数据-- step 5.2------>', response); | 95 | console.error('返回的数据-- step 5.2------>', response); |
86 | // roles must be a non-empty array | 96 | // roles must be a non-empty array |
87 | if (!roles || roles.length <= 0) { | 97 | if (!roles || roles.length <= 0) { |
88 | reject('getInfo: roles must be a non-null array!') | 98 | reject('getInfo: roles must be a non-null array!') |
89 | } | 99 | } |
90 | commit('SET_ROLES', roles) | 100 | commit('SET_ROLES', roles) |
91 | commit('SET_NAME', name) | 101 | commit('SET_NAME', name) |
92 | commit('SET_AVATAR', avatar) | 102 | commit('SET_AVATAR', avatar) |
93 | resolve(response) | 103 | resolve(response) |
94 | }).catch(error => { | 104 | }).catch(error => { |
95 | console.log('返回的数据-- step 5.3------>', error); | 105 | console.log('返回的数据-- step 5.3------>', error); |
96 | reject(error) | 106 | reject(error) |
97 | }) | 107 | }) |
98 | }) | 108 | }) |
99 | }, | 109 | }, |
100 | 110 | ||
101 | // user logout | 111 | // user logout |
102 | logout({ | 112 | logout({ |
103 | commit, | 113 | commit, |
104 | state | 114 | state |
105 | }) { | 115 | }) { |
106 | return new Promise((resolve, reject) => { | 116 | return new Promise((resolve, reject) => { |
107 | logout(state.token).then(() => { | 117 | logout(state.token).then(() => { |
108 | removeToken() // must remove token first | 118 | removeToken() // must remove token first |
109 | resetRouter() | 119 | resetRouter() |
110 | commit('RESET_STATE') | 120 | commit('RESET_STATE') |
111 | resolve() | 121 | resolve() |
112 | }).catch(error => { | 122 | }).catch(error => { |
113 | reject(error) | 123 | reject(error) |
114 | }) | 124 | }) |
115 | }) | 125 | }) |
116 | }, | 126 | }, |
117 | 127 | ||
118 | // remove token | 128 | // remove token |
119 | resetToken({ | 129 | resetToken({ |
120 | commit | 130 | commit |
121 | }) { | 131 | }) { |
122 | return new Promise(resolve => { | 132 | return new Promise(resolve => { |
123 | removeToken() // must remove token first | 133 | removeToken() // must remove token first |
124 | commit('RESET_STATE') | 134 | commit('RESET_STATE') |
125 | resolve() | 135 | resolve() |
126 | }) | 136 | }) |
127 | } | 137 | } |
128 | } | 138 | } |
129 | 139 | ||
130 | export default { | 140 | export default { |
131 | namespaced: true, | 141 | namespaced: true, |
132 | state, | 142 | state, |
133 | mutations, | 143 | mutations, |
134 | actions | 144 | actions |
135 | } | 145 | } |
136 | 146 |
src/views/table/index.vue
1 | <template> | 1 | <template> |
2 | <div class="app-container"> | 2 | <div class="app-container"> |
3 | <el-table | 3 | <el-table |
4 | v-loading="listLoading" | 4 | v-loading="listLoading" |
5 | :data="list" | 5 | :data="list" |
6 | element-loading-text="Loading" | 6 | element-loading-text="Loading" |
7 | border | 7 | border |
8 | fit | 8 | fit |
9 | highlight-current-row | 9 | highlight-current-row |
10 | > | 10 | > |
11 | <el-table-column align="center" label="用户id"> | 11 | <el-table-column align="center" label="用户id"> |
12 | <template slot-scope="scope">{{ scope.$index }}</template> | 12 | <template slot-scope="scope">{{ scope.$index }}</template> |
13 | </el-table-column> | 13 | </el-table-column> |
14 | 14 | ||
15 | <el-table-column label="openid"> | 15 | <el-table-column label="openid"> |
16 | <template slot-scope="scope">{{ scope.row.openid }}</template> | 16 | <template slot-scope="scope">{{ scope.row.openid }}</template> |
17 | </el-table-column> | 17 | </el-table-column> |
18 | 18 | ||
19 | <el-table-column label="昵称" width="110" align="center"> | 19 | <el-table-column label="昵称" width="110" align="center"> |
20 | <template slot-scope="scope"> | 20 | <template slot-scope="scope"> |
21 | <span>{{ scope.row.username }}</span> | 21 | <span>{{ scope.row.username }}</span> |
22 | </template> | 22 | </template> |
23 | </el-table-column> | 23 | </el-table-column> |
24 | 24 | ||
25 | <el-table-column label="头像" width="110" align="center"> | 25 | <el-table-column label="头像" width="110" align="center"> |
26 | <template slot-scope="scope">{{ scope.row.avatar }}</template> | 26 | <template slot-scope="scope">{{ scope.row.avatar }}</template> |
27 | </el-table-column> | 27 | </el-table-column> |
28 | 28 | ||
29 | <el-table-column class-name="status-col" label="状态" align="center"> | 29 | <el-table-column class-name="status-col" label="状态" align="center"> |
30 | <template slot-scope="scope"> | 30 | <template slot-scope="scope"> |
31 | <el-tag :type="scope.row.status | statusFilter">{{ scope.row.status }}</el-tag> | 31 | <el-tag :type="scope.row.status | statusFilter">{{ scope.row.status }}</el-tag> |
32 | </template> | 32 | </template> |
33 | </el-table-column> | 33 | </el-table-column> |
34 | 34 | ||
35 | <el-table-column align="center" prop="created_at" label="注册时间"> | 35 | <el-table-column align="center" prop="created_at" label="注册时间"> |
36 | <template slot-scope="scope"> | 36 | <template slot-scope="scope"> |
37 | <i class="el-icon-time" /> | 37 | <i class="el-icon-time" /> |
38 | <span>{{ scope.row.create_at }}</span> | 38 | <span>{{ scope.row.create_at }}</span> |
39 | </template> | 39 | </template> |
40 | </el-table-column> | 40 | </el-table-column> |
41 | <el-table-column align="center" prop="created_at" label="成交记录"> | 41 | <el-table-column align="center" prop="created_at" label="成交记录"> |
42 | <template slot-scope="scope"> | 42 | <template slot-scope="scope"> |
43 | <i class="el-icon-time" /> | 43 | <i class="el-icon-time" /> |
44 | <span>{{ scope.row.pageviews }}</span> | 44 | <span>{{ scope.row.pageviews }}</span> |
45 | </template> | 45 | </template> |
46 | </el-table-column> | 46 | </el-table-column> |
47 | <el-table-column align="center" prop="created_at" label="引流图"> | 47 | <el-table-column align="center" prop="created_at" label="引流图"> |
48 | <template slot-scope="scope"> | 48 | <template slot-scope="scope"> |
49 | <span> | 49 | <span> |
50 | <el-button type="primary">子用户{{scope.row.pageviews}}</el-button> | 50 | <el-button type="primary">子用户{{scope.row.pageviews}}</el-button> |
51 | </span> | 51 | </span> |
52 | </template> | 52 | </template> |
53 | </el-table-column> | 53 | </el-table-column> |
54 | </el-table> | 54 | </el-table> |
55 | <el-pagination background layout="prev, pager, next" :total="100"></el-pagination> | 55 | <el-pagination background layout="prev, pager, next" :total="100"></el-pagination> |
56 | </div> | 56 | </div> |
57 | </template> | 57 | </template> |
58 | 58 | ||
59 | <script> | 59 | <script> |
60 | import { getList } from "@/api/table"; | 60 | import { getList } from "@/api/table"; |
61 | 61 | ||
62 | export default { | 62 | export default { |
63 | filters: { | 63 | filters: { |
64 | statusFilter(status) { | 64 | statusFilter(status) { |
65 | const statusMap = { | 65 | const statusMap = { |
66 | published: "success", | 66 | published: "success", |
67 | draft: "gray", | 67 | draft: "gray", |
68 | deleted: "danger" | 68 | deleted: "danger" |
69 | }; | 69 | }; |
70 | return statusMap[status]; | 70 | return statusMap[status]; |
71 | } | 71 | } |
72 | }, | 72 | }, |
73 | data() { | 73 | data() { |
74 | return { | 74 | return { |
75 | list: null, | 75 | list: null, |
76 | listLoading: true | 76 | listLoading: true |
77 | }; | 77 | }; |
78 | }, | 78 | }, |
79 | created() { | 79 | created() { |
80 | this.fetchData(); | 80 | this.fetchData(); |
81 | }, | 81 | }, |
82 | methods: { | 82 | methods: { |
83 | fetchData() { | 83 | fetchData() { |
84 | this.listLoading = true; | 84 | this.listLoading = true; |
85 | getList().then(response => { | 85 | getList().then(response => { |
86 | console.log("----getList---", response); | 86 | console.log("----getList---", response); |
87 | this.list = response.data.items; | 87 | this.list = response.items; |
88 | this.listLoading = false; | 88 | this.listLoading = false; |
89 | }); | 89 | }); |
90 | } | 90 | } |
91 | } | 91 | } |
92 | }; | 92 | }; |
93 | </script> | 93 | </script> |
94 | 94 |