Commit faa5c2563ef7b5c26fc05bc2067e7ddecc9549f2

Authored by Adam
Exists in master

Merge branch 'master' into 'master'

Master

2

See merge request !6
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