See999 4 years ago
commit
3c4dc2cf4e
100 changed files with 21235 additions and 0 deletions
  1. 23 0
      .babelrc
  2. 14 0
      .editorconfig
  3. 3 0
      .eslintignore
  4. 199 0
      .eslintrc.js
  5. 2 0
      .gitattributes
  6. 5 0
      .gitignore
  7. 14 0
      .postcssrc.js
  8. 5 0
      .travis.yml
  9. 21 0
      LICENSE
  10. 185 0
      README.md
  11. 195 0
      README.zh-CN.md
  12. 14 0
      babel.config.js
  13. 56 0
      build/build.js
  14. 54 0
      build/check-versions.js
  15. BIN
      build/logo.png
  16. 111 0
      build/utils.js
  17. 22 0
      build/vue-loader.conf.js
  18. 120 0
      build/webpack.base.conf.js
  19. 88 0
      build/webpack.dev.conf.js
  20. 175 0
      build/webpack.prod.conf.js
  21. 13 0
      config/dev.env.js
  22. 100 0
      config/index.js
  23. 12 0
      config/prod.env.js
  24. 11 0
      config/sit.env.js
  25. BIN
      favicon.ico
  26. 34 0
      index.html
  27. 14963 0
      package-lock.json
  28. 155 0
      package.json
  29. 36 0
      src/App.vue
  30. 9 0
      src/api/district.js
  31. 15 0
      src/api/kefu/tencentim.js
  32. 215 0
      src/api/login/login.js
  33. 15 0
      src/api/micro/micro.js
  34. 9 0
      src/api/mpwechat/material.js
  35. 24 0
      src/api/mpwechat/mpmenus.js
  36. 47 0
      src/api/mpwechat/mpreply.js
  37. 15 0
      src/api/mpwechat/mpwechat.js
  38. 32 0
      src/api/org/orginfo.js
  39. 244 0
      src/api/patient/patient.js
  40. 10 0
      src/api/qiniu.js
  41. 81 0
      src/api/role/admin.js
  42. 72 0
      src/api/role/role.js
  43. 84 0
      src/api/service.js
  44. BIN
      src/assets/401_images/401.gif
  45. BIN
      src/assets/404_images/404.png
  46. BIN
      src/assets/404_images/404_cloud.png
  47. BIN
      src/assets/custom-theme/fonts/element-icons.ttf
  48. BIN
      src/assets/custom-theme/fonts/element-icons.woff
  49. 1 0
      src/assets/custom-theme/index.css
  50. 199 0
      src/assets/echarts-macarons.js
  51. 3 0
      src/assets/eventBus.js
  52. BIN
      src/assets/home/analyze.png
  53. BIN
      src/assets/home/equipment.png
  54. BIN
      src/assets/home/prescription.png
  55. BIN
      src/assets/home/record.png
  56. BIN
      src/assets/home/scheduling.png
  57. BIN
      src/assets/home/sick.png
  58. BIN
      src/assets/home/user.png
  59. BIN
      src/assets/home/userData.png
  60. BIN
      src/assets/home/wei.jpg
  61. 370 0
      src/assets/icon/demo.css
  62. 52 0
      src/assets/icon/demo_fontclass.html
  63. 79 0
      src/assets/icon/demo_symbol.html
  64. 90 0
      src/assets/icon/demo_unicode.html
  65. 21 0
      src/assets/icon/iconfont.css
  66. BIN
      src/assets/icon/iconfont.eot
  67. 1 0
      src/assets/icon/iconfont.js
  68. 32 0
      src/assets/icon/iconfont.svg
  69. BIN
      src/assets/icon/iconfont.ttf
  70. BIN
      src/assets/icon/iconfont.woff
  71. 370 0
      src/assets/iconfont/demo.css
  72. 544 0
      src/assets/iconfont/demo_fontclass.html
  73. 743 0
      src/assets/iconfont/demo_symbol.html
  74. 582 0
      src/assets/iconfont/demo_unicode.html
  75. 361 0
      src/assets/iconfont/iconfont.css
  76. BIN
      src/assets/iconfont/iconfont.eot
  77. 1 0
      src/assets/iconfont/iconfont.js
  78. 284 0
      src/assets/iconfont/iconfont.svg
  79. BIN
      src/assets/iconfont/iconfont.ttf
  80. BIN
      src/assets/iconfont/iconfont.woff
  81. BIN
      src/assets/images/add.png
  82. BIN
      src/assets/images/add2.png
  83. BIN
      src/assets/images/add3.png
  84. BIN
      src/assets/images/add4.png
  85. BIN
      src/assets/images/b1.png
  86. BIN
      src/assets/images/b2.png
  87. BIN
      src/assets/images/b3.png
  88. BIN
      src/assets/images/b4.png
  89. BIN
      src/assets/images/banner.png
  90. BIN
      src/assets/images/homebanner.jpg
  91. BIN
      src/assets/images/hospital.png
  92. BIN
      src/assets/images/i1.png
  93. BIN
      src/assets/images/i10.png
  94. BIN
      src/assets/images/i2.png
  95. BIN
      src/assets/images/i3.png
  96. BIN
      src/assets/images/i4.png
  97. BIN
      src/assets/images/i5.png
  98. BIN
      src/assets/images/i6.png
  99. BIN
      src/assets/images/i7.png
  100. 0 0
      src/assets/images/i8.png

+ 23 - 0
.babelrc View File

1
+{
2
+  "presets": [
3
+    ["env", {
4
+      "modules": false,
5
+      "targets": {
6
+        "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
7
+      }
8
+    }],
9
+    "stage-2"
10
+  ],
11
+  "plugins": [
12
+    "transform-vue-jsx", "transform-runtime",
13
+  ],
14
+  "env": {
15
+    "development":{
16
+      "plugins": ["dynamic-import-node"],
17
+    }
18
+  },
19
+
20
+  "plugins": [ ["import", { "libraryName": "vant", "libraryDirectory": "es", "style": true }] ]
21
+}
22
+
23
+

+ 14 - 0
.editorconfig View File

1
+# http://editorconfig.org
2
+root = true
3
+
4
+[*]
5
+charset = utf-8
6
+indent_style = space
7
+indent_size = 2
8
+end_of_line = lf
9
+insert_final_newline = true
10
+trim_trailing_whitespace = true
11
+
12
+[*.md]
13
+insert_final_newline = false
14
+trim_trailing_whitespace = false

+ 3 - 0
.eslintignore View File

1
+build/*.js
2
+config/*.js
3
+src/assets

+ 199 - 0
.eslintrc.js View File

1
+module.exports = {
2
+  root: true,
3
+  parser: 'babel-eslint',
4
+  parserOptions: {
5
+    sourceType: 'module'
6
+  },
7
+  env: {
8
+    browser: true,
9
+    node: true,
10
+    es6: true,
11
+  },
12
+  extends: 'eslint:recommended',
13
+  // required to lint *.vue files
14
+  plugins: [
15
+    'html'
16
+  ],
17
+  // check if imports actually resolve
18
+  'settings': {
19
+    'import/resolver': {
20
+      'webpack': {
21
+        'config': 'build/webpack.base.conf.js'
22
+      }
23
+    }
24
+  },
25
+  // add your custom rules here
26
+  //it is base on https://github.com/vuejs/eslint-config-vue
27
+  'rules': {
28
+    'accessor-pairs': 2,
29
+    'arrow-spacing': [2, {
30
+      'before': true,
31
+      'after': true
32
+    }],
33
+    'block-spacing': [2, 'always'],
34
+    'brace-style': [2, '1tbs', {
35
+      'allowSingleLine': true
36
+    }],
37
+    'camelcase': [0, {
38
+      'properties': 'always'
39
+    }],
40
+    'comma-dangle': [2, 'never'],
41
+    'comma-spacing': [2, {
42
+      'before': false,
43
+      'after': true
44
+    }],
45
+    'comma-style': [2, 'last'],
46
+    'constructor-super': 2,
47
+    'curly': [2, 'multi-line'],
48
+    'dot-location': [2, 'property'],
49
+    'eol-last': 2,
50
+    'eqeqeq': [2, 'allow-null'],
51
+    'generator-star-spacing': [2, {
52
+      'before': true,
53
+      'after': true
54
+    }],
55
+    'handle-callback-err': [2, '^(err|error)$'],
56
+    'indent': [2, 2, {
57
+      'SwitchCase': 1
58
+    }],
59
+    'jsx-quotes': [2, 'prefer-single'],
60
+    'key-spacing': [2, {
61
+      'beforeColon': false,
62
+      'afterColon': true
63
+    }],
64
+    'keyword-spacing': [2, {
65
+      'before': true,
66
+      'after': true
67
+    }],
68
+    'new-cap': [2, {
69
+      'newIsCap': true,
70
+      'capIsNew': false
71
+    }],
72
+    'new-parens': 2,
73
+    'no-array-constructor': 2,
74
+    'no-caller': 2,
75
+    'no-console': 'off',
76
+    'no-class-assign': 2,
77
+    'no-cond-assign': 2,
78
+    'no-const-assign': 2,
79
+    'no-control-regex': 0,
80
+    'no-delete-var': 2,
81
+    'no-dupe-args': 2,
82
+    'no-dupe-class-members': 2,
83
+    'no-dupe-keys': 2,
84
+    'no-duplicate-case': 2,
85
+    'no-empty-character-class': 2,
86
+    'no-empty-pattern': 2,
87
+    'no-eval': 2,
88
+    'no-ex-assign': 2,
89
+    'no-extend-native': 2,
90
+    'no-extra-bind': 2,
91
+    'no-extra-boolean-cast': 2,
92
+    'no-extra-parens': [2, 'functions'],
93
+    'no-fallthrough': 2,
94
+    'no-floating-decimal': 2,
95
+    'no-func-assign': 2,
96
+    'no-implied-eval': 2,
97
+    'no-inner-declarations': [2, 'functions'],
98
+    'no-invalid-regexp': 2,
99
+    'no-irregular-whitespace': 2,
100
+    'no-iterator': 2,
101
+    'no-label-var': 2,
102
+    'no-labels': [2, {
103
+      'allowLoop': false,
104
+      'allowSwitch': false
105
+    }],
106
+    'no-lone-blocks': 2,
107
+    'no-mixed-spaces-and-tabs': 2,
108
+    'no-multi-spaces': 2,
109
+    'no-multi-str': 2,
110
+    'no-multiple-empty-lines': [2, {
111
+      'max': 1
112
+    }],
113
+    'no-native-reassign': 2,
114
+    'no-negated-in-lhs': 2,
115
+    'no-new-object': 2,
116
+    'no-new-require': 2,
117
+    'no-new-symbol': 2,
118
+    'no-new-wrappers': 2,
119
+    'no-obj-calls': 2,
120
+    'no-octal': 2,
121
+    'no-octal-escape': 2,
122
+    'no-path-concat': 2,
123
+    'no-proto': 2,
124
+    'no-redeclare': 2,
125
+    'no-regex-spaces': 2,
126
+    'no-return-assign': [2, 'except-parens'],
127
+    'no-self-assign': 2,
128
+    'no-self-compare': 2,
129
+    'no-sequences': 2,
130
+    'no-shadow-restricted-names': 2,
131
+    'no-spaced-func': 2,
132
+    'no-sparse-arrays': 2,
133
+    'no-this-before-super': 2,
134
+    'no-throw-literal': 2,
135
+    'no-trailing-spaces': 2,
136
+    'no-undef': 2,
137
+    'no-undef-init': 2,
138
+    'no-unexpected-multiline': 2,
139
+    'no-unmodified-loop-condition': 2,
140
+    'no-unneeded-ternary': [2, {
141
+      'defaultAssignment': false
142
+    }],
143
+    'no-unreachable': 2,
144
+    'no-unsafe-finally': 2,
145
+    'no-unused-vars': [2, {
146
+      'vars': 'all',
147
+      'args': 'none'
148
+    }],
149
+    'no-useless-call': 2,
150
+    'no-useless-computed-key': 2,
151
+    'no-useless-constructor': 2,
152
+    'no-useless-escape': 0,
153
+    'no-whitespace-before-property': 2,
154
+    'no-with': 2,
155
+    'one-var': [2, {
156
+      'initialized': 'never'
157
+    }],
158
+    'operator-linebreak': [2, 'after', {
159
+      'overrides': {
160
+        '?': 'before',
161
+        ':': 'before'
162
+      }
163
+    }],
164
+    'padded-blocks': [2, 'never'],
165
+    'quotes': [2, 'single', {
166
+      'avoidEscape': true,
167
+      'allowTemplateLiterals': true
168
+    }],
169
+    'semi': [2, 'never'],
170
+    'semi-spacing': [2, {
171
+      'before': false,
172
+      'after': true
173
+    }],
174
+    'space-before-blocks': [2, 'always'],
175
+    'space-before-function-paren': [2, 'never'],
176
+    'space-in-parens': [2, 'never'],
177
+    'space-infix-ops': 2,
178
+    'space-unary-ops': [2, {
179
+      'words': true,
180
+      'nonwords': false
181
+    }],
182
+    'spaced-comment': [2, 'always', {
183
+      'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
184
+    }],
185
+    'template-curly-spacing': [2, 'never'],
186
+    'use-isnan': 2,
187
+    'valid-typeof': 2,
188
+    'wrap-iife': [2, 'any'],
189
+    'yield-star-spacing': [2, 'both'],
190
+    'yoda': [2, 'never'],
191
+    'prefer-const': 2,
192
+    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
193
+    'object-curly-spacing': [2, 'always', {
194
+      objectsInObjects: false
195
+    }],
196
+    'array-bracket-spacing': [2, 'never']
197
+  }
198
+}
199
+

+ 2 - 0
.gitattributes View File

1
+# Auto detect text files and perform LF normalization
2
+* text=auto

+ 5 - 0
.gitignore View File

1
+node_modules
2
+.svn
3
+dist
4
+.git
5
+/.idea

+ 14 - 0
.postcssrc.js View File

1
+// https://github.com/michael-ciniawsky/postcss-load-config
2
+
3
+module.exports = {
4
+  plugins: {
5
+    "postcss-import": {},
6
+    "postcss-url": {},
7
+    // to edit target browsers: use "browserslist" field in package.json
8
+    autoprefixer: {}
9
+  },
10
+  "postcss-pxtorem": {
11
+    rootValue: 32,
12
+    propList: ["*"]
13
+  }
14
+};

+ 5 - 0
.travis.yml View File

1
+language: node_js
2
+node_js: stable
3
+script: npm run test
4
+notifications:
5
+  email: false

+ 21 - 0
LICENSE View File

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

+ 185 - 0
README.md View File

1
+<p align="center">
2
+  <img width="320" src="https://wpimg.wallstcn.com/ecc53a42-d79b-42e2-8852-5126b810a4c8.svg">
3
+</p>
4
+
5
+<p align="center">
6
+  <a href="https://github.com/vuejs/vue">
7
+    <img src="https://img.shields.io/badge/vue-2.5.10-brightgreen.svg" alt="vue">
8
+  </a>
9
+  <a href="https://github.com/ElemeFE/element">
10
+    <img src="https://img.shields.io/badge/element--ui-2.3.2-brightgreen.svg" alt="element-ui">
11
+  </a>
12
+  <a href="https://travis-ci.org/PanJiaChen/vue-element-admin" rel="nofollow">
13
+    <img src="https://travis-ci.org/PanJiaChen/vue-element-admin.svg?branch=master" alt="Build Status">
14
+  </a>
15
+  <a href="https://github.com/PanJiaChen/vue-element-admin/blob/master/LICENSE">
16
+    <img src="https://img.shields.io/github/license/mashape/apistatus.svg" alt="license">
17
+  </a>
18
+  <a href="https://github.com/PanJiaChen/vue-element-admin/releases">
19
+    <img src="https://img.shields.io/github/release/PanJiaChen/vue-element-admin.svg" alt="GitHub release">
20
+  </a>
21
+</p>
22
+
23
+English | [简体中文](./README.zh-CN.md)
24
+
25
+## Introduction
26
+
27
+[vue-element-admin](http://panjiachen.github.io/vue-element-admin) is a front-end management background integration solution. It based on [vue](https://github.com/vuejs/vue) and use the UI Toolkit [element](https://github.com/ElemeFE/element).
28
+
29
+It is a magical vue admin based on the newest development stack of vue, built-in i18n solution, typical templates for enterprise applications, lots of awesome features. It helps you build a large complex Single-Page Applications. I believe whatever your needs are, this project will help you.
30
+
31
+- [Preview](http://panjiachen.github.io/vue-element-admin)
32
+
33
+- [Documentation](https://panjiachen.github.io/vue-element-admin-site/)
34
+
35
+- [Gitter](https://gitter.im/vue-element-admin/discuss)
36
+
37
+- [Wiki](https://github.com/PanJiaChen/vue-element-admin/wiki)
38
+
39
+- [Donate](https://panjiachen.github.io/vue-element-admin-site/donate/)
40
+
41
+- [Gitee](https://panjiachen.gitee.io/vue-element-admin/) 国内用户可访问该地址在线预览
42
+
43
+**This project is positioned as a background integration solution and is not suitable for secondary development as a basic template.**
44
+
45
+ - Base template recommends using: [vueAdmin-template](https://github.com/PanJiaChen/vueAdmin-template)  
46
+ - Desktop: [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin)
47
+
48
+## Preparation
49
+
50
+You need to install [node](http://nodejs.org/) and [git](https://git-scm.com/) locally. The project is based on [ES2015+](http://es6.ruanyifeng.com/), [vue](https://cn.vuejs.org/index.html), [vuex](https://vuex.vuejs.org/zh-cn/), [vue-router](https://router.vuejs.org/zh-cn/), [axios](https://github.com/axios/axios) and [element-ui](https://github.com/ElemeFE/element), all request data is simulated using [Mock.js](https://github.com/nuysoft/Mock).
51
+ Understanding and learning this knowledge in advance will greatly help the use of this project.
52
+
53
+ **This project does not support low version browsers (e.g. IE). Please add polyfill yourself if you need them.**
54
+
55
+ **Note: This project uses element-ui@2.3.0+ version, so the minimum compatible vue@2.5.0+**
56
+
57
+ <p align="center">
58
+  <img width="900" src="https://wpimg.wallstcn.com/a5894c1b-f6af-456e-82df-1151da0839bf.png">
59
+</p>
60
+
61
+## Features
62
+```
63
+- Login / Logout
64
+
65
+- Permission Authentication
66
+  - Page permission
67
+  - Directive permission
68
+  - Two-step login
69
+
70
+- Multi-environment build
71
+  - dev sit stage prod
72
+
73
+- Global Features
74
+  - I18n
75
+  - Multiple dynamic themes
76
+  - Dynamic sidebar (supports multi-level routing)
77
+  - Dynamic breadcrumb
78
+  - Tags-view(Tab page Support right-click operation)
79
+  - Svg Sprite
80
+  - Mock data
81
+  - Screenfull
82
+  - Responsive Sidebar
83
+
84
+- Editor
85
+  - Rich Text Editor
86
+  - Markdown Editor
87
+  - JSON Editor
88
+
89
+- Excel
90
+  - Export Excel
91
+  - Export zip
92
+  - Upload Excel
93
+  - Visualization Excel
94
+
95
+- Table
96
+  - Dynamic Table
97
+  - Drag And Drop Table
98
+  - Tree Table
99
+  - Inline Edit Table
100
+
101
+- Error Page
102
+  - 401
103
+  - 404
104
+
105
+- Components
106
+  - Avatar Upload
107
+  - Back To Top
108
+  - Drag Dialog
109
+  - Drag Kanban
110
+  - Drag List
111
+  - SplitPane
112
+  - Dropzone
113
+  - Sticky
114
+  - CountTo
115
+
116
+- Advanced Example
117
+- Error Log
118
+- Dashboard
119
+- Guide Page
120
+- Echarts
121
+- Clipboard
122
+- Markdown to html
123
+```
124
+
125
+## Getting started
126
+
127
+```bash
128
+# clone the project
129
+git clone https://github.com/PanJiaChen/vue-element-admin.git
130
+
131
+# install dependency
132
+npm install
133
+
134
+# develop
135
+npm run dev
136
+```
137
+
138
+This will automatically open http://localhost:9527.
139
+
140
+## Build
141
+```bash
142
+# build for test environment
143
+npm run build:sit
144
+
145
+# build for production environment
146
+npm run build:prod
147
+```
148
+
149
+## Advanced
150
+```bash
151
+# --report to build with bundle size analytics
152
+npm run build:prod --report
153
+
154
+# --preview to start a server in local to preview
155
+npm run build:prod --preview
156
+
157
+# lint code
158
+npm run lint
159
+
160
+# auto fix
161
+npm run lint -- --fix
162
+```
163
+
164
+Refer to [Documentation](https://panjiachen.github.io/vue-element-admin-site/guide/essentials/deploy.html) for more information
165
+
166
+## Changelog
167
+Detailed changes for each release are documented in the [release notes](https://github.com/PanJiaChen/vue-element-admin/releases).
168
+
169
+## Online Demo
170
+[Preview](http://panjiachen.github.io/vue-element-admin)
171
+
172
+## Donate
173
+If you find this project useful, you can buy author a glass of juice :tropical_drink:
174
+
175
+![donate](https://wpimg.wallstcn.com/bd273f0d-83a0-4ef2-92e1-9ac8ed3746b9.png)
176
+
177
+[Paypal Me](https://www.paypal.me/panfree23)
178
+
179
+[Buy me a coffee](https://www.buymeacoffee.com/Pan)
180
+
181
+## License
182
+
183
+[MIT](https://github.com/PanJiaChen/vue-element-admin/blob/master/LICENSE)
184
+
185
+Copyright (c) 2017-present PanJiaChen

+ 195 - 0
README.zh-CN.md View File

1
+<p align="center">
2
+  <img width="320" src="https://wpimg.wallstcn.com/ecc53a42-d79b-42e2-8852-5126b810a4c8.svg">
3
+</p>
4
+
5
+<p align="center">
6
+  <a href="https://github.com/vuejs/vue">
7
+    <img src="https://img.shields.io/badge/vue-2.5.10-brightgreen.svg" alt="vue">
8
+  </a>
9
+  <a href="https://github.com/ElemeFE/element">
10
+    <img src="https://img.shields.io/badge/element--ui-2.3.2-brightgreen.svg" alt="element-ui">
11
+  </a>
12
+  <a href="https://travis-ci.org/PanJiaChen/vue-element-admin" rel="nofollow">
13
+    <img src="https://travis-ci.org/PanJiaChen/vue-element-admin.svg?branch=master" alt="Build Status">
14
+  </a>
15
+  <a href="https://github.com/PanJiaChen/vue-element-admin/blob/master/LICENSE">
16
+    <img src="https://img.shields.io/github/license/mashape/apistatus.svg" alt="license">
17
+  </a>
18
+  <a href="https://github.com/PanJiaChen/vue-element-admin/releases">
19
+    <img src="https://img.shields.io/github/release/PanJiaChen/vue-element-admin.svg" alt="GitHub release">
20
+  </a>
21
+</p>
22
+
23
+简体中文 | [English](./README.md)
24
+
25
+## 简介
26
+
27
+[vue-element-admin](http://panjiachen.github.io/vue-element-admin) 是一个后台集成解决方案,它基于 [vue](https://github.com/vuejs/vue) 和 [element](https://github.com/ElemeFE/element)。它使用了最新的前端技术栈,内置了i18国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。相信不管你的需求是什么,本项目都能帮助到你。
28
+
29
+- [在线访问](http://panjiachen.github.io/vue-element-admin)
30
+
31
+- [使用文档](https://panjiachen.github.io/vue-element-admin-site/zh/)
32
+
33
+- [Gitter讨论组](https://gitter.im/vue-element-admin/discuss)
34
+
35
+- [Wiki](https://github.com/PanJiaChen/vue-element-admin/wiki)
36
+
37
+- [Donate](https://panjiachen.github.io/vue-element-admin-site/zh/donate/)
38
+
39
+- [Gitee](https://panjiachen.gitee.io/vue-element-admin/) 国内用户可访问该地址在线预览
40
+
41
+**本项目的定位是后台集成方案,不适合当基础模板来开发。**
42
+ - 模板建议使用: [vueAdmin-template](https://github.com/PanJiaChen/vueAdmin-template)  
43
+ - 桌面端: [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin)
44
+
45
+## 前序准备
46
+
47
+你需要在本地安装 [node](http://nodejs.org/) 和 [git](https://git-scm.com/)。本项目技术栈基于 [ES2015+](http://es6.ruanyifeng.com/)、[vue](https://cn.vuejs.org/index.html)、[vuex](https://vuex.vuejs.org/zh-cn/)、[vue-router](https://router.vuejs.org/zh-cn/) 、[axios](https://github.com/axios/axios) 和 [element-ui](https://github.com/ElemeFE/element),所有的请求数据都使用[Mock.js](https://github.com/nuysoft/Mock)模拟,提前了解和学习这些知识会对使用本项目有很大的帮助。
48
+
49
+同时配套一个系列的教程文章,如何从零构建后一个完整的后台项目,建议大家先看完这些文章再来实践本项目
50
+ - [手摸手,带你用 vue 撸后台 系列一(基础篇)](https://juejin.im/post/59097cd7a22b9d0065fb61d2)
51
+ - [手摸手,带你用 vue 撸后台 系列二(登录权限篇)](https://juejin.im/post/591aa14f570c35006961acac)
52
+ - [手摸手,带你用 vue 撸后台 系列三 (实战篇)](https://juejin.im/post/593121aa0ce4630057f70d35)
53
+ - [手摸手,带你用 vue 撸后台 系列四(vueAdmin 一个极简的后台基础模板)](https://juejin.im/post/595b4d776fb9a06bbe7dba56)
54
+ - [手摸手,带你封装一个 vue component](https://segmentfault.com/a/1190000009090836)
55
+ - [手摸手,带你优雅的使用 icon](https://juejin.im/post/59bb864b5188257e7a427c09)
56
+ - [手摸手,带你用合理的姿势使用webpack4(上)](https://juejin.im/post/5b56909a518825195f499806)
57
+ - [手摸手,带你用合理的姿势使用webpack4(下)](https://juejin.im/post/5b5d6d6f6fb9a04fea58aabc)
58
+
59
+ 或者加入该群主 **[圈子](https://jianshiapp.com/circles/1209)** 楼主会经常分享一些技术相关的东西
60
+
61
+ **如有问题请先看上述使用文档和文章,若不能满足,欢迎 issue 和 pr**
62
+
63
+ **本项目并不是一个脚手架,更倾向于是一个集成解决方案**
64
+
65
+ **注意:该项目使用 element-ui@2.3.0+ 版本,所以最低兼容 vue@2.5.0+**
66
+
67
+ **该项目不支持低版本浏览器(如ie),有需求请自行添加polyfill [详情](https://github.com/PanJiaChen/vue-element-admin/wiki#babel-polyfill)**
68
+
69
+ <p align="center">
70
+  <img width="900" src="https://wpimg.wallstcn.com/a5894c1b-f6af-456e-82df-1151da0839bf.png">
71
+</p>
72
+
73
+## 功能
74
+```
75
+- 登录 / 注销
76
+
77
+- 权限验证
78
+  - 页面权限
79
+  - 指令权限
80
+  - 二步登录
81
+
82
+- 多环境发布
83
+  - dev sit stage prod
84
+
85
+- 全局功能
86
+  - 国际化多语言
87
+  - 多种动态换肤
88
+  - 动态侧边栏(支持多级路由嵌套)
89
+  - 动态面包屑
90
+  - 快捷导航(标签页)
91
+  - Svg Sprite 图标
92
+  - 本地mock数据
93
+  - Screenfull全屏
94
+  - 自适应收缩侧边栏
95
+
96
+- 编辑器
97
+  - 富文本
98
+  - Markdown
99
+  - JSON 等多格式
100
+
101
+- Excel
102
+  - 导出excel
103
+  - 导出zip
104
+  - 导入excel
105
+  - 前端可视化excel
106
+
107
+- 表格
108
+  - 动态表格
109
+  - 拖拽表格
110
+  - 树形表格
111
+  - 内联编辑
112
+
113
+- 错误页面
114
+  - 401
115
+  - 404
116
+
117
+- 組件
118
+  - 头像上传
119
+  - 返回顶部
120
+  - 拖拽Dialog
121
+  - 拖拽看板
122
+  - 列表拖拽
123
+  - SplitPane
124
+  - Dropzone
125
+  - Sticky
126
+  - CountTo
127
+
128
+- 综合实例
129
+- 错误日志
130
+- Dashboard
131
+- 引导页
132
+- Echarts 图表
133
+- Clipboard(剪贴复制)
134
+- Markdown2html
135
+```
136
+
137
+## 开发
138
+```bash
139
+# 克隆项目
140
+git clone https://github.com/PanJiaChen/vue-element-admin.git
141
+
142
+# 安装依赖
143
+npm install
144
+   
145
+# 建议不要用cnpm安装 会有各种诡异的bug 可以通过如下操作解决 npm 下载速度慢的问题
146
+npm install --registry=https://registry.npm.taobao.org
147
+
148
+# 启动服务
149
+npm run dev
150
+```
151
+浏览器访问 http://localhost:9527
152
+
153
+## 发布
154
+```bash
155
+# 构建测试环境
156
+npm run build:sit
157
+
158
+# 构建生产环境
159
+npm run build:prod
160
+```
161
+
162
+## 其它
163
+```bash
164
+# --report to build with bundle size analytics
165
+npm run build:prod --report
166
+
167
+# --preview to start a server in local to preview
168
+npm run build:prod --preview
169
+
170
+# lint code
171
+npm run lint
172
+
173
+# auto fix
174
+npm run lint -- --fix
175
+```
176
+
177
+更多信息请参考 [使用文档](https://panjiachen.github.io/vue-element-admin-site/zh/)
178
+
179
+## Changelog
180
+Detailed changes for each release are documented in the [release notes](https://github.com/PanJiaChen/vue-element-admin/releases).
181
+
182
+## Online Demo
183
+[在线 Demo](http://panjiachen.github.io/vue-element-admin)
184
+
185
+## Donate
186
+如果你觉得这个项目帮助到了你,你可以帮作者买一杯果汁表示鼓励 :tropical_drink:
187
+![donate](https://panjiachen.github.io/donate/donation.png)
188
+
189
+[Paypal Me](https://www.paypal.me/panfree23)
190
+
191
+## License
192
+
193
+[MIT](https://github.com/PanJiaChen/vue-element-admin/blob/master/LICENSE)
194
+
195
+Copyright (c) 2017-present PanJiaChen

+ 14 - 0
babel.config.js View File

1
+module.exports = {
2
+  presets: ["@vue/cli-plugin-babel/preset"],
3
+  plugins: [
4
+    [
5
+      "import",
6
+      {
7
+        libraryName: "vant",
8
+        libraryDirectory: "es",
9
+        style: true
10
+      },
11
+      "vant"
12
+    ]
13
+  ]
14
+};

+ 56 - 0
build/build.js View File

1
+'use strict'
2
+require('./check-versions')()
3
+
4
+const ora = require('ora')
5
+const rm = require('rimraf')
6
+const path = require('path')
7
+const chalk = require('chalk')
8
+const webpack = require('webpack')
9
+const config = require('../config')
10
+const webpackConfig = require('./webpack.prod.conf')
11
+var connect = require('connect');
12
+var serveStatic = require('serve-static')
13
+
14
+const spinner = ora('building for ' + process.env.env_config + ' environment...')
15
+spinner.start()
16
+
17
+rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
18
+  if (err) throw err
19
+  webpack(webpackConfig, (err, stats) => {
20
+    spinner.stop()
21
+    if (err) throw err
22
+    process.stdout.write(stats.toString({
23
+      colors: true,
24
+      modules: false,
25
+      children: false,
26
+      chunks: false,
27
+      chunkModules: false
28
+    }) + '\n\n')
29
+
30
+    if (stats.hasErrors()) {
31
+      console.log(chalk.red(' Build failed with errors.\n'))
32
+      process.exit(1)
33
+    }
34
+
35
+    console.log(chalk.cyan(' Build complete.\n'))
36
+    console.log(chalk.yellow(
37
+      ' Tip: built files are meant to be served over an HTTP server.\n' +
38
+      ' Opening index.html over file:// won\'t work.\n'
39
+    ))
40
+
41
+    if (process.env.npm_config_preview) {
42
+      const port = 9526
43
+      const host = "http://localhost:" + port
44
+      const basePath = config.build.assetsPublicPath
45
+      const app = connect()
46
+
47
+      app.use(basePath, serveStatic('./dist', {
48
+        'index': ['index.html', '/']
49
+      }))
50
+
51
+      app.listen(port, function () {
52
+        console.log(chalk.green(`> Listening at  http://localhost:${port}${basePath}`))
53
+      });
54
+    }
55
+  })
56
+})

+ 54 - 0
build/check-versions.js View File

1
+'use strict'
2
+const chalk = require('chalk')
3
+const semver = require('semver')
4
+const packageConfig = require('../package.json')
5
+const shell = require('shelljs')
6
+
7
+function exec (cmd) {
8
+  return require('child_process').execSync(cmd).toString().trim()
9
+}
10
+
11
+const versionRequirements = [
12
+  {
13
+    name: 'node',
14
+    currentVersion: semver.clean(process.version),
15
+    versionRequirement: packageConfig.engines.node
16
+  }
17
+]
18
+
19
+// if (shell.which('npm')) {
20
+//   versionRequirements.push({
21
+//     name: 'npm',
22
+//     currentVersion: exec('npm --version'),
23
+//     versionRequirement: packageConfig.engines.npm
24
+//   })
25
+// }
26
+
27
+module.exports = function () {
28
+  const warnings = []
29
+
30
+  for (let i = 0; i < versionRequirements.length; i++) {
31
+    const mod = versionRequirements[i]
32
+
33
+    if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
34
+      warnings.push(mod.name + ': ' +
35
+        chalk.red(mod.currentVersion) + ' should be ' +
36
+        chalk.green(mod.versionRequirement)
37
+      )
38
+    }
39
+  }
40
+
41
+  if (warnings.length) {
42
+    console.log('')
43
+    console.log(chalk.yellow('To use this template, you must update following to modules:'))
44
+    console.log()
45
+
46
+    for (let i = 0; i < warnings.length; i++) {
47
+      const warning = warnings[i]
48
+      console.log('  ' + warning)
49
+    }
50
+
51
+    console.log()
52
+    process.exit(1)
53
+  }
54
+}

BIN
build/logo.png View File


+ 111 - 0
build/utils.js View File

1
+'use strict'
2
+const path = require('path')
3
+const config = require('../config')
4
+const ExtractTextPlugin = require('extract-text-webpack-plugin')
5
+const packageConfig = require('../package.json')
6
+
7
+exports.assetsPath = function (_path) {
8
+  const assetsSubDirectory = process.env.NODE_ENV === 'production'
9
+    ? config.build.assetsSubDirectory
10
+    : config.dev.assetsSubDirectory
11
+
12
+  return path.posix.join(assetsSubDirectory, _path)
13
+}
14
+
15
+exports.cssLoaders = function (options) {
16
+  options = options || {}
17
+
18
+  const cssLoader = {
19
+    loader: 'css-loader',
20
+    options: {
21
+      sourceMap: options.sourceMap
22
+    }
23
+  }
24
+
25
+  const postcssLoader = {
26
+    loader: 'postcss-loader',
27
+    options: {
28
+      sourceMap: options.sourceMap
29
+    }
30
+  }
31
+
32
+  // generate loader string to be used with extract text plugin
33
+  function generateLoaders (loader, loaderOptions) {
34
+    const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
35
+
36
+    if (loader) {
37
+      loaders.push({
38
+        loader: loader + '-loader',
39
+        options: Object.assign({}, loaderOptions, {
40
+          sourceMap: options.sourceMap
41
+        })
42
+      })
43
+    }
44
+
45
+    // Extract CSS when that option is specified
46
+    // (which is the case during production build)
47
+    if (options.extract) {
48
+      return ExtractTextPlugin.extract({
49
+        use: loaders,
50
+        publicPath:'../../',
51
+        fallback: 'vue-style-loader'
52
+      })
53
+    } else {
54
+      return ['vue-style-loader'].concat(loaders)
55
+    }
56
+  }
57
+
58
+  // https://vue-loader.vuejs.org/en/configurations/extract-css.html
59
+  return {
60
+    css: generateLoaders(),
61
+    postcss: generateLoaders(),
62
+    less: generateLoaders('less'),
63
+    sass: generateLoaders('sass', { indentedSyntax: true }),
64
+    scss: generateLoaders('sass').concat(
65
+      {
66
+        loader: 'sass-resources-loader',
67
+        options: {
68
+          resources: path.resolve(__dirname, '../src/styles/variables.scss')//这里按照你的文件路径填写
69
+        }
70
+      }
71
+    ),
72
+    // scss: generateLoaders('sass'),
73
+    stylus: generateLoaders('stylus'),
74
+    styl: generateLoaders('stylus')
75
+  }
76
+}
77
+
78
+
79
+// Generate loaders for standalone style files (outside of .vue)
80
+exports.styleLoaders = function (options) {
81
+  const output = []
82
+  const loaders = exports.cssLoaders(options)
83
+
84
+  for (const extension in loaders) {
85
+    const loader = loaders[extension]
86
+    output.push({
87
+      test: new RegExp('\\.' + extension + '$'),
88
+      use: loader
89
+    })
90
+  }
91
+
92
+  return output
93
+}
94
+
95
+exports.createNotifierCallback = () => {
96
+  const notifier = require('node-notifier')
97
+
98
+  return (severity, errors) => {
99
+    if (severity !== 'error') return
100
+
101
+    const error = errors[0]
102
+    const filename = error.file && error.file.split('!').pop()
103
+
104
+    notifier.notify({
105
+      title: packageConfig.name,
106
+      message: severity + ': ' + error.name,
107
+      subtitle: filename || '',
108
+      icon: path.join(__dirname, 'logo.png')
109
+    })
110
+  }
111
+}

+ 22 - 0
build/vue-loader.conf.js View File

1
+'use strict'
2
+const utils = require('./utils')
3
+const config = require('../config')
4
+const isProduction = process.env.NODE_ENV === 'production'
5
+const sourceMapEnabled = isProduction
6
+  ? config.build.productionSourceMap
7
+  : config.dev.cssSourceMap
8
+
9
+module.exports = {
10
+  loaders: utils.cssLoaders({
11
+    sourceMap: sourceMapEnabled,
12
+    extract: isProduction
13
+  }),
14
+  cssSourceMap: sourceMapEnabled,
15
+  cacheBusting: config.dev.cacheBusting,
16
+  transformToRequire: {
17
+    video: ['src', 'poster'],
18
+    source: 'src',
19
+    img: 'src',
20
+    image: 'xlink:href'
21
+  }
22
+}

+ 120 - 0
build/webpack.base.conf.js View File

1
+"use strict";
2
+const path = require("path");
3
+const utils = require("./utils");
4
+const config = require("../config");
5
+const vueLoaderConfig = require("./vue-loader.conf");
6
+const webpack = require("webpack");
7
+
8
+function resolve(dir) {
9
+  return path.join(__dirname, "..", dir);
10
+}
11
+
12
+// const createLintingRule = () => ({
13
+//   test: /\.(js|vue)$/,
14
+//   loader: 'eslint-loader',
15
+//   enforce: 'pre',
16
+//   include: [resolve('src'), resolve('test')],
17
+//   options: {
18
+//     formatter: require('eslint-friendly-formatter'),
19
+//     emitWarning: !config.dev.showEslintErrorsInOverlay
20
+//   }
21
+// })
22
+
23
+module.exports = {
24
+  context: path.resolve(__dirname, "../"),
25
+  entry: {
26
+    app: "./src/main.js"
27
+  },
28
+  externals: {
29
+    BMap: "BMap"
30
+  },
31
+  output: {
32
+    path: config.build.assetsRoot,
33
+    filename: "[name].js",
34
+    publicPath:
35
+      process.env.NODE_ENV === "production"
36
+        ? config.build.assetsPublicPath
37
+        : config.dev.assetsPublicPath
38
+  },
39
+  resolve: {
40
+    extensions: [".js", ".vue", ".json"],
41
+    alias: {
42
+      vue$: "vue/dist/vue.esm.js",
43
+      "@": resolve("src")
44
+    }
45
+  },
46
+  module: {
47
+    rules: [
48
+      ...(config.dev.useEslint ? [] : []),
49
+      {
50
+        test: /\.vue$/,
51
+        loader: "vue-loader",
52
+        options: vueLoaderConfig
53
+      },
54
+      {
55
+        test: /\.js$/,
56
+        loader: "babel-loader?cacheDirectory",
57
+        include: [
58
+          resolve("src"),
59
+          resolve("test"),
60
+          resolve("node_modules/webpack-dev-server/client")
61
+        ]
62
+      },
63
+      {
64
+        test: /\.svg$/,
65
+        loader: "svg-sprite-loader",
66
+        include: [resolve("src/icons")],
67
+        options: {
68
+          symbolId: "icon-[name]"
69
+        }
70
+      },
71
+      {
72
+        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
73
+        loader: "url-loader",
74
+        exclude: [resolve("src/icons")],
75
+        options: {
76
+          limit: 10000,
77
+          name: utils.assetsPath("img/[name].[hash:7].[ext]")
78
+        }
79
+      },
80
+      {
81
+        test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
82
+        loader: "url-loader",
83
+        options: {
84
+          limit: 10000,
85
+          name: utils.assetsPath("media/[name].[hash:7].[ext]")
86
+        }
87
+      },
88
+      {
89
+        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
90
+        loader: "url-loader",
91
+        options: {
92
+          limit: 10000,
93
+          name: utils.assetsPath("fonts/[name].[hash:7].[ext]")
94
+        }
95
+      },
96
+      {
97
+        test: /\.sass$/,
98
+        loaders: ["style", "css", "sass"]
99
+      }
100
+    ]
101
+  },
102
+  node: {
103
+    // prevent webpack from injecting useless setImmediate polyfill because Vue
104
+    // source contains it (although only uses it if it's native).
105
+    setImmediate: false,
106
+    // prevent webpack from injecting mocks to Node native modules
107
+    // that does not make sense for the client
108
+    dgram: "empty",
109
+    fs: "empty",
110
+    net: "empty",
111
+    tls: "empty",
112
+    child_process: "empty"
113
+  },
114
+  plugins: [
115
+    new webpack.ProvidePlugin({
116
+      $: "jquery",
117
+      jQuery: "jquery"
118
+    })
119
+  ]
120
+};

+ 88 - 0
build/webpack.dev.conf.js View File

1
+'use strict'
2
+const path = require('path')
3
+const utils = require('./utils')
4
+const webpack = require('webpack')
5
+const config = require('../config')
6
+const merge = require('webpack-merge')
7
+const baseWebpackConfig = require('./webpack.base.conf')
8
+const HtmlWebpackPlugin = require('html-webpack-plugin')
9
+const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
10
+const portfinder = require('portfinder')
11
+
12
+function resolve (dir) {
13
+  return path.join(__dirname, '..', dir)
14
+}
15
+
16
+const HOST = process.env.HOST
17
+const PORT = process.env.PORT && Number(process.env.PORT)
18
+
19
+const devWebpackConfig = merge(baseWebpackConfig, {
20
+  module: {
21
+    rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
22
+  },
23
+  // cheap-module-eval-source-map is faster for development
24
+  devtool: config.dev.devtool,
25
+
26
+  // these devServer options should be customized in /config/index.js
27
+  devServer: {
28
+    clientLogLevel: 'warning',
29
+    historyApiFallback: true,
30
+    hot: true,
31
+    compress: true,
32
+    host: HOST || config.dev.host,
33
+    port: PORT || config.dev.port,
34
+    open: config.dev.autoOpenBrowser,
35
+    overlay: config.dev.errorOverlay
36
+      ? { warnings: false, errors: true }
37
+      : false,
38
+    publicPath: config.dev.assetsPublicPath,
39
+    proxy: config.dev.proxyTable,
40
+    quiet: true, // necessary for FriendlyErrorsPlugin
41
+    watchOptions: {
42
+      poll: config.dev.poll,
43
+    }
44
+  },
45
+  plugins: [
46
+    new webpack.DefinePlugin({
47
+      'process.env': require('../config/dev.env')
48
+    }),
49
+    new webpack.HotModuleReplacementPlugin(),
50
+    new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
51
+    new webpack.NoEmitOnErrorsPlugin(),
52
+    // https://github.com/ampedandwired/html-webpack-plugin
53
+    new HtmlWebpackPlugin({
54
+      filename: 'index.html',
55
+      template: 'index.html',
56
+      inject: true,
57
+      favicon: resolve('favicon.ico'),
58
+      title: '血透系统',
59
+      path: config.dev.assetsPublicPath + config.dev.assetsSubDirectory
60
+    }),
61
+  ]
62
+})
63
+
64
+module.exports = new Promise((resolve, reject) => {
65
+  portfinder.basePort = process.env.PORT || config.dev.port
66
+  portfinder.getPort((err, port) => {
67
+    if (err) {
68
+      reject(err)
69
+    } else {
70
+      // publish the new Port, necessary for e2e tests
71
+      process.env.PORT = port
72
+      // add port to devServer config
73
+      devWebpackConfig.devServer.port = port
74
+
75
+      // Add FriendlyErrorsPlugin
76
+      devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
77
+        compilationSuccessInfo: {
78
+          messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
79
+        },
80
+        onErrors: config.dev.notifyOnErrors
81
+        ? utils.createNotifierCallback()
82
+        : undefined
83
+      }))
84
+
85
+      resolve(devWebpackConfig)
86
+    }
87
+  })
88
+})

+ 175 - 0
build/webpack.prod.conf.js View File

1
+'use strict'
2
+const path = require('path')
3
+const utils = require('./utils')
4
+const webpack = require('webpack')
5
+const config = require('../config')
6
+const merge = require('webpack-merge')
7
+const baseWebpackConfig = require('./webpack.base.conf')
8
+const CopyWebpackPlugin = require('copy-webpack-plugin')
9
+const HtmlWebpackPlugin = require('html-webpack-plugin')
10
+const ExtractTextPlugin = require('extract-text-webpack-plugin')
11
+const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
12
+const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
13
+
14
+function resolve (dir) {
15
+  return path.join(__dirname, '..', dir)
16
+}
17
+
18
+const env = require('../config/'+process.env.env_config+'.env')
19
+
20
+const webpackConfig = merge(baseWebpackConfig, {
21
+  module: {
22
+    rules: utils.styleLoaders({
23
+      sourceMap: config.build.productionSourceMap,
24
+      extract: true,
25
+      usePostCSS: true
26
+    })
27
+  },
28
+  devtool: config.build.productionSourceMap ? config.build.devtool : false,
29
+  output: {
30
+    path: config.build.assetsRoot,
31
+    filename: utils.assetsPath('js/[name].[chunkhash].js'),
32
+    chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
33
+  },
34
+  plugins: [
35
+    // http://vuejs.github.io/vue-loader/en/workflow/production.html
36
+    new webpack.DefinePlugin({
37
+      'process.env': env
38
+    }),
39
+    new UglifyJsPlugin({
40
+      uglifyOptions: {
41
+        compress: {
42
+          warnings: false
43
+        }
44
+      },
45
+      sourceMap: config.build.productionSourceMap,
46
+      parallel: true
47
+    }),
48
+    // extract css into its own file
49
+    new ExtractTextPlugin({
50
+      filename: utils.assetsPath('css/[name].[contenthash].css'),
51
+      // Setting the following option to `false` will not extract CSS from codesplit chunks.
52
+      // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.
53
+      // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110
54
+      allChunks: false,
55
+    }),
56
+    // Compress extracted CSS. We are using this plugin so that possible
57
+    // duplicated CSS from different components can be deduped.
58
+    new OptimizeCSSPlugin({
59
+      cssProcessorOptions: config.build.productionSourceMap
60
+        ? { safe: true, map: { inline: false } }
61
+        : { safe: true }
62
+    }),
63
+    // generate dist index.html with correct asset hash for caching.
64
+    // you can customize output by editing /index.html
65
+    // see https://github.com/ampedandwired/html-webpack-plugin
66
+    new HtmlWebpackPlugin({
67
+      filename: config.build.index,
68
+      template: 'index.html',
69
+      inject: true,
70
+      favicon: resolve('favicon.ico'),
71
+      title: 'vue-element-admin',
72
+      path: config.build.assetsPublicPath + config.build.assetsSubDirectory,
73
+      minify: {
74
+        removeComments: true,
75
+        collapseWhitespace: true,
76
+        removeAttributeQuotes: true
77
+        // more options:
78
+        // https://github.com/kangax/html-minifier#options-quick-reference
79
+      },
80
+      // necessary to consistently work with multiple chunks via CommonsChunkPlugin
81
+      chunksSortMode: 'dependency'
82
+    }),
83
+    // keep module.id stable when vender modules does not change
84
+    new webpack.HashedModuleIdsPlugin(),
85
+    // enable scope hoisting
86
+    new webpack.optimize.ModuleConcatenationPlugin(),
87
+    // split vendor js into its own file
88
+    new webpack.optimize.CommonsChunkPlugin({
89
+      name: 'vendor',
90
+      minChunks (module) {
91
+        // any required modules inside node_modules are extracted to vendor
92
+        return (
93
+          module.resource &&
94
+          /\.js$/.test(module.resource) &&
95
+          module.resource.indexOf(
96
+            path.join(__dirname, '../node_modules')
97
+          ) === 0
98
+        )
99
+      }
100
+    }),
101
+    // extract webpack runtime and module manifest to its own file in order to
102
+    // prevent vendor hash from being updated whenever app bundle is updated
103
+    new webpack.optimize.CommonsChunkPlugin({
104
+      name: 'manifest',
105
+      minChunks: Infinity
106
+    }),
107
+    // This instance extracts shared chunks from code splitted chunks and bundles them
108
+    // in a separate chunk, similar to the vendor chunk
109
+    // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
110
+    new webpack.optimize.CommonsChunkPlugin({
111
+      name: 'app',
112
+      async: 'vendor-async',
113
+      children: true,
114
+      minChunks: 3
115
+    }),
116
+    // split echarts into its own file
117
+    new webpack.optimize.CommonsChunkPlugin({
118
+      async: 'echarts',
119
+      minChunks(module) {
120
+        var context = module.context;
121
+        return context && (context.indexOf('echarts') >= 0 || context.indexOf('zrender') >= 0);
122
+      }
123
+    }),
124
+    // split xlsx into its own file
125
+    new webpack.optimize.CommonsChunkPlugin({
126
+      async: 'xlsx',
127
+      minChunks(module) {
128
+        var context = module.context;
129
+        return context && (context.indexOf('xlsx') >= 0);
130
+      }
131
+    }),
132
+     // split codemirror into its own file
133
+     new webpack.optimize.CommonsChunkPlugin({
134
+      async: 'codemirror',
135
+      minChunks(module) {
136
+        var context = module.context;
137
+        return context && (context.indexOf('codemirror') >= 0);
138
+      }
139
+    }),
140
+
141
+    // copy custom static assets
142
+    new CopyWebpackPlugin([
143
+      {
144
+        from: path.resolve(__dirname, '../static'),
145
+        to: config.build.assetsSubDirectory,
146
+        ignore: ['.*']
147
+      }
148
+    ])
149
+  ]
150
+})
151
+
152
+if (config.build.productionGzip) {
153
+  const CompressionWebpackPlugin = require('compression-webpack-plugin')
154
+
155
+  webpackConfig.plugins.push(
156
+    new CompressionWebpackPlugin({
157
+      asset: '[path].gz[query]',
158
+      algorithm: 'gzip',
159
+      test: new RegExp(
160
+        '\\.(' +
161
+        config.build.productionGzipExtensions.join('|') +
162
+        ')$'
163
+      ),
164
+      threshold: 10240,
165
+      minRatio: 0.8
166
+    })
167
+  )
168
+}
169
+
170
+if (config.build.bundleAnalyzerReport) {
171
+  const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
172
+  webpackConfig.plugins.push(new BundleAnalyzerPlugin())
173
+}
174
+
175
+module.exports = webpackConfig

+ 13 - 0
config/dev.env.js View File

1
+module.exports = {
2
+  NODE_ENV: '"development"',
3
+  ENV_CONFIG: '"dev"',
4
+  // BASE_API: '"http://api.test1.sgjyun.com"'
5
+   BASE_API: '"http://localhost:9536"'
6
+  //  BASE_API:'"http://api.scrm.kuyicloud.com"',//'"http://localhost:9534"'
7
+    // BASE_API: '"http://mt.api.sgjyun.com"'
8
+  //  SSO_HOST: '"https://testsso.sgjyun.com"',
9
+  //  SRCM_HOST: '"http://test1.sgjyun.com"',
10
+  //  XT_HOST: '"http://xt.test.sgjyun.com"',
11
+  //  MIRCO_MALL_HOST: '"http://mall.test.sgjyun.com"',
12
+  //  CDM_HOST: '"http://cdm.test.sgjyun.com"',
13
+};

+ 100 - 0
config/index.js View File

1
+'use strict'
2
+// Template version: 1.2.6
3
+// see http://vuejs-templates.github.io/webpack for documentation.
4
+
5
+const path = require('path')
6
+
7
+module.exports = {
8
+  dev: {
9
+
10
+    // Paths
11
+    assetsSubDirectory: 'static',
12
+    assetsPublicPath: '/',
13
+    proxyTable: {},
14
+
15
+    // Various Dev Server settings
16
+
17
+    // can be overwritten by process.env.HOST
18
+    // if you want dev by ip, please set host: '0.0.0.0'
19
+
20
+    //  host: 'test1.sgjyun.com',
21
+    // host: 'microweb.kuyicloud.com',
22
+    host: 'localhost',
23
+    // host: 'jk.kuyicloud.com',
24
+    //  host: 'mt.sgjyun.com',
25
+    // port: 8091, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
26
+    port: 8090, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
27
+    // host: 'test1.sgjyun.com',
28
+    autoOpenBrowser: true,
29
+    errorOverlay: true,
30
+    notifyOnErrors: false,
31
+    poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
32
+
33
+    // Use Eslint Loader?
34
+    // If true, your code will be linted during bundling and
35
+    // linting errors and warnings will be shown in the console.
36
+    useEslint: false,
37
+
38
+    // If true, eslint errors and warnings will also be shown in the error overlay
39
+    // in the browser.
40
+    showEslintErrorsInOverlay: false,
41
+
42
+    /**
43
+     * Source Maps
44
+     */
45
+
46
+    // https://webpack.js.org/configuration/devtool/#development
47
+    devtool: '#cheap-source-map',
48
+
49
+    // If you have problems debugging vue-files in devtools,
50
+    // set this to false - it *may* help
51
+    // https://vue-loader.vuejs.org/en/options.html#cachebusting
52
+    cacheBusting: true,
53
+
54
+    // CSS Sourcemaps off by default because relative paths are "buggy"
55
+    // with this option, according to the CSS-Loader README
56
+    // (https://github.com/webpack/css-loader#sourcemaps)
57
+    // In our experience, they generally work as expected,
58
+    // just be aware of this issue when enabling this option.
59
+    cssSourceMap: false,
60
+  },
61
+
62
+  build: {
63
+    // Template for index.html
64
+    index: path.resolve(__dirname, '../dist/index.html'),
65
+
66
+    // Paths
67
+    assetsRoot: path.resolve(__dirname, '../dist'),
68
+    assetsSubDirectory: 'static',
69
+
70
+    /**
71
+     * You can set by youself according to actual condition
72
+     * You will need to set this if you plan to deploy your site under a sub path,
73
+     * for example GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/,
74
+     * then assetsPublicPath should be set to "/bar/".
75
+     * In most cases please use '/' !!!
76
+     */
77
+    // assetsPublicPath: '/vue-element-admin/', // If you are deployed on the root path, please use '/'
78
+    assetsPublicPath: './',
79
+
80
+    /**
81
+     * Source Maps
82
+     */
83
+    productionSourceMap: false,
84
+    // https://webpack.js.org/configuration/devtool/#production
85
+    devtool: '#source-map',
86
+
87
+    // Gzip off by default as many popular static hosts such as
88
+    // Surge or Netlify already gzip all static assets for you.
89
+    // Before setting to `true`, make sure to:
90
+    // npm install --save-dev compression-webpack-plugin
91
+    productionGzip: false,
92
+    productionGzipExtensions: ['js', 'css'],
93
+
94
+    // Run the build command with an extra argument to
95
+    // View the bundle analyzer report after build finishes:
96
+    // `npm run build --report`
97
+    // Set to `true` or `false` to always turn it on or off
98
+    bundleAnalyzerReport: process.env.npm_config_report
99
+  }
100
+}

+ 12 - 0
config/prod.env.js View File

1
+module.exports = {
2
+  NODE_ENV: '"production"',
3
+  ENV_CONFIG: '"prod"',
4
+  BASE_API: '"http://api.scrm.kuyicloud.com"',
5
+  // BASE_API: '"http://api.test1.sgjyun.com"',
6
+
7
+  // SSO_HOST: '"https://sso.kuyicloud.com"',
8
+  // SRCM_HOST: '"http://jk.kuyicloud.com"',
9
+  // XT_HOST: '"http://xt.kuyicloud.com"',
10
+  // MIRCO_MALL_HOST: '"http://mall.kuyicloud.com"',
11
+  // CDM_HOST: '"http://cdm.kuyicloud.com"',
12
+}

+ 11 - 0
config/sit.env.js View File

1
+module.exports = {
2
+  NODE_ENV: '"production"',
3
+  ENV_CONFIG: '"sit"',
4
+  // BASE_API: '"http://api.jk.test.sgjyun.com"',
5
+  BASE_API: '"http://mt.api.sgjyun.com"',
6
+  SSO_HOST: '"https://testsso.sgjyun.com"',
7
+  SRCM_HOST: '"http://test1.sgjyun.com"',
8
+  XT_HOST: '"http://xt.test.sgjyun.com"',
9
+  MIRCO_MALL_HOST: '"htts://mall.test.sgjyun.com"',
10
+  CDM_HOST: '"http://cdm.test.sgjyun.com"',
11
+}

BIN
favicon.ico View File


+ 34 - 0
index.html View File

1
+<!DOCTYPE html>
2
+<html>
3
+  <head>
4
+    <meta charset="utf-8" />
5
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
6
+    <meta name="renderer" content="webkit" />
7
+    <meta name="”referrer”" content="”never”" />
8
+    <meta name="referrer" content="no-referrer" />
9
+    <meta
10
+      name="viewport"
11
+      content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
12
+    />
13
+    <title>酷医云</title>
14
+  </head>
15
+  <body>
16
+    <script src="<%= htmlWebpackPlugin.options.path %>/tinymce4.7.5/tinymce.min.js"></script>
17
+    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
18
+    <script src="<%= htmlWebpackPlugin.options.path %>/neditor/neditor.config.js"></script>
19
+    <script src="<%= htmlWebpackPlugin.options.path %>/neditor/neditor.all.min.js"></script>
20
+    <script src="<%= htmlWebpackPlugin.options.path %>/neditor/neditor.service.js"></script>
21
+    <script src="<%= htmlWebpackPlugin.options.path %>/neditor/i18n/zh-cn/zh-cn.js"></script>
22
+    <script src="<%= htmlWebpackPlugin.options.path %>/neditor/neditor.parse.min.js"></script>
23
+
24
+    <div id="app"></div>
25
+    <!-- built files will be auto injected -->
26
+    <script src="http://api.map.baidu.com/api?v=2.0&ak=?&callback=init"></script>
27
+    <link
28
+      rel="stylesheet"
29
+      href="//at.alicdn.com/t/font_1480998_bf2iq8rd9p9.css"
30
+    />
31
+    <link href="//vjs.zencdn.net/4.9/video-js.css" rel="stylesheet" />
32
+    <script src="//vjs.zencdn.net/4.9/video.js"></script>
33
+  </body>
34
+</html>

File diff suppressed because it is too large
+ 14963 - 0
package-lock.json


+ 155 - 0
package.json View File

1
+{
2
+  "name": "vue-element-admin",
3
+  "version": "3.7.3",
4
+  "description": "A magical vue admin. Typical templates for enterprise applications. Newest development stack of vue. Lots of awesome features",
5
+  "author": "Pan <panfree23@gmail.com>",
6
+  "license": "MIT",
7
+  "scripts": {
8
+    "dev": "cross-env BABEL_ENV=development webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
9
+    "build:prod": "cross-env NODE_ENV=production env_config=prod node build/build.js",
10
+    "build:sit": "cross-env NODE_ENV=production env_config=sit node build/build.js && npm run fixfont && npm run fiximg",
11
+    "lint": "eslint --ext .js,.vue src",
12
+    "test": "npm run lint",
13
+    "precommit": "lint-staged",
14
+    "build": "cross-env NODE_ENV=production env_config=sit node build/build.js && npm run fixfont && npm run fiximg",
15
+    "fixfont": "xcopy %cd%\\dist\\static\\fonts %cd%\\dist\\static\\css\\static\\fonts /s /y /d /e /i",
16
+    "fiximg": "xcopy %cd%\\dist\\static\\img %cd%\\dist\\static\\css\\static\\img /s /y /d /e /i"
17
+  },
18
+  "lint-staged": {
19
+    "src/**/*.{js,vue}": [
20
+      "eslint --fix",
21
+      "git add"
22
+    ]
23
+  },
24
+  "keywords": [
25
+    "vue",
26
+    "element-ui",
27
+    "admin",
28
+    "management-system",
29
+    "admin-template"
30
+  ],
31
+  "repository": {
32
+    "type": "git",
33
+    "url": "git+https://github.com/PanJiaChen/vue-element-admin.git"
34
+  },
35
+  "bugs": {
36
+    "url": "https://github.com/PanJiaChen/vue-element-admin/issues"
37
+  },
38
+  "dependencies": {
39
+    "@types/moment": "^2.13.0",
40
+    "@types/qrcode": "^1.3.3",
41
+    "@types/spark-md5": "^3.0.1",
42
+    "@types/swiper": "^4.4.3",
43
+    "ajv": "^6.5.3",
44
+    "axios": "0.17.1",
45
+    "clipboard": "1.7.1",
46
+    "codemirror": "5.32.0",
47
+    "connect": "3.6.6",
48
+    "cube-ui": "^1.12.26",
49
+    "driver.js": "0.5.2",
50
+    "dropzone": "5.2.0",
51
+    "echarts": "3.8.5",
52
+    "element-ui": "^2.10.1",
53
+    "file-saver": "1.3.3",
54
+    "font-awesome": "4.7.0",
55
+    "js-cookie": "2.2.0",
56
+    "jsonlint": "1.6.3",
57
+    "jszip": "3.1.5",
58
+    "mint-ui": "^2.2.13",
59
+    "mockjs": "1.0.1-beta3",
60
+    "moment": "^2.24.0",
61
+    "normalize.css": "^7.0.0",
62
+    "nprogress": "0.2.0",
63
+    "print-js": "^1.0.50",
64
+    "qrcode": "^1.4.1",
65
+    "qrcodejs2": "0.0.2",
66
+    "screenfull": "4.2.0",
67
+    "serve-static": "1.13.2",
68
+    "showdown": "1.8.5",
69
+    "simplemde": "1.11.2",
70
+    "sortablejs": "1.7.0",
71
+    "spark-md5": "^3.0.0",
72
+    "style-loader": "^1.0.0",
73
+    "swiper": "^4.5.1",
74
+    "v-viewer": "^1.4.2",
75
+    "vant": "^2.2.12",
76
+    "vue": "2.5.16",
77
+    "vue-baidu-map": "^0.21.22",
78
+    "vue-count-to": "1.0.13",
79
+    "vue-i18n": "7.3.2",
80
+    "vue-infinite-scroll": "^2.0.2",
81
+    "vue-multiselect": "2.0.8",
82
+    "vue-photo-preview": "^1.1.3",
83
+    "vue-router": "3.0.1",
84
+    "vue-splitpane": "1.0.2",
85
+    "vuedraggable": "^2.23.0",
86
+    "vuescroll": "^4.13.1",
87
+    "vuex": "3.0.1",
88
+    "webim-tencent": "^1.0.2",
89
+    "xlsx": "^0.11.16"
90
+  },
91
+  "devDependencies": {
92
+    "@types/jquery": "^3.3.31",
93
+    "autoprefixer": "7.2.3",
94
+    "babel-core": "6.26.0",
95
+    "babel-eslint": "8.0.3",
96
+    "babel-helper-vue-jsx-merge-props": "2.0.3",
97
+    "babel-loader": "7.1.2",
98
+    "babel-plugin-dynamic-import-node": "^1.2.0",
99
+    "babel-plugin-import": "^1.12.2",
100
+    "babel-plugin-syntax-jsx": "6.18.0",
101
+    "babel-plugin-transform-runtime": "6.23.0",
102
+    "babel-plugin-transform-vue-jsx": "3.5.0",
103
+    "babel-preset-env": "1.6.1",
104
+    "babel-preset-stage-2": "6.24.1",
105
+    "chalk": "2.3.0",
106
+    "copy-webpack-plugin": "4.3.0",
107
+    "cross-env": "5.1.1",
108
+    "css-loader": "^0.28.7",
109
+    "eslint": "4.13.1",
110
+    "eslint-friendly-formatter": "3.0.0",
111
+    "eslint-loader": "1.9.0",
112
+    "eslint-plugin-html": "4.0.1",
113
+    "extract-text-webpack-plugin": "3.0.2",
114
+    "file-loader": "1.1.5",
115
+    "friendly-errors-webpack-plugin": "1.6.1",
116
+    "html-webpack-plugin": "2.30.1",
117
+    "jquery": "^3.4.1",
118
+    "koa2-cors": "^2.0.6",
119
+    "lint-staged": "7.2.0",
120
+    "node-notifier": "5.1.2",
121
+    "node-sass": "^4.13.1",
122
+    "optimize-css-assets-webpack-plugin": "3.2.0",
123
+    "ora": "1.3.0",
124
+    "portfinder": "1.0.13",
125
+    "postcss-import": "11.0.0",
126
+    "postcss-loader": "2.0.9",
127
+    "postcss-pxtorem": "^4.0.1",
128
+    "postcss-url": "7.3.0",
129
+    "rimraf": "2.6.2",
130
+    "sass-loader": "^6.0.7",
131
+    "sass-resources-loader": "^1.3.4",
132
+    "script-loader": "0.7.2",
133
+    "semver": "5.4.1",
134
+    "shelljs": "0.7.8",
135
+    "svg-sprite-loader": "3.5.2",
136
+    "uglifyjs-webpack-plugin": "1.1.3",
137
+    "url-loader": "0.6.2",
138
+    "vue-loader": "13.7.2",
139
+    "vue-quill-editor": "^3.0.6",
140
+    "vue-style-loader": "3.0.3",
141
+    "vue-template-compiler": "2.5.16",
142
+    "webpack": "3.10.0",
143
+    "webpack-bundle-analyzer": "2.9.1",
144
+    "webpack-merge": "4.1.1"
145
+  },
146
+  "engines": {
147
+    "node": ">= 4.0.0",
148
+    "npm": ">= 3.0.0"
149
+  },
150
+  "browserslist": [
151
+    "> 1%",
152
+    "last 2 versions",
153
+    "not ie <= 8"
154
+  ]
155
+}

+ 36 - 0
src/App.vue View File

1
+<template>
2
+  <div id="app" class="app">
3
+    <router-view v-if="isRouterAlive"></router-view>
4
+  </div>
5
+</template>
6
+
7
+<script>
8
+  export default{
9
+    name: 'App',
10
+    provide () {
11
+      return {
12
+        reload:this.reload
13
+      }
14
+    },
15
+    data(){
16
+      return{
17
+        isRouterAlive:true
18
+      }
19
+    },
20
+    methods: {
21
+       reload(){
22
+         this.isRouterAlive = false;
23
+         this.$nextTick(function(){
24
+           this.isRouterAlive = true;
25
+         })
26
+       }
27
+    }
28
+  }
29
+</script>
30
+
31
+
32
+<style lang="scss" scoped>
33
+.app{
34
+  -webkit-overflow-scrolling: touch;
35
+}
36
+</style>

+ 9 - 0
src/api/district.js View File

1
+import request from '@/utils/request'
2
+
3
+export function GetDistrictsByUpid(params){
4
+    return request({
5
+        url:'/api/district/getdistrictsbyupid',
6
+        method:'get',
7
+        params: params
8
+    })
9
+}

+ 15 - 0
src/api/kefu/tencentim.js View File

1
+import request from '@/utils/request'
2
+
3
+export function getusersig() {
4
+  return request({
5
+    url: '/api/tencent/usersig', 
6
+    method: 'get',
7
+  })
8
+}
9
+export function GetAllMembers() {
10
+  return request({
11
+    url: '/api/members/all', 
12
+    method: 'get',
13
+  })
14
+}
15
+

+ 215 - 0
src/api/login/login.js View File

1
+import request from '@/utils/request'
2
+import org from '../../router/modules/org'
3
+
4
+export function verifyToken(token) {
5
+  return request({
6
+    url: '/api/token/verify',
7
+    method: 'post',
8
+    params: {
9
+      'token': token
10
+    }
11
+  })
12
+}
13
+
14
+export function modifyAdminInfo(params) {
15
+  return request({
16
+    url: '/api/admin/edit_info',
17
+    method: 'post',
18
+    params: params
19
+  })
20
+}
21
+
22
+export function getModifyPwdCode(phone) {
23
+  console.log('phone', phone)
24
+  return request({
25
+    url: '/api/password/code?phone=' + phone,
26
+    method: 'post'
27
+  })
28
+}
29
+
30
+export function modifyPassword(new_pwd, code) {
31
+  var params = {
32
+    password: new_pwd,
33
+    code: code
34
+  }
35
+  return request({
36
+    url: '/api/password/modify',
37
+    method: 'post',
38
+    params: params
39
+  })
40
+}
41
+
42
+export function submitModifyPwdAction(phone, password, code) {
43
+  const params = {
44
+    phone: phone,
45
+    password: password,
46
+    code: code
47
+  }
48
+  return request({
49
+    url: '/api/save/register',
50
+    method: 'Post',
51
+    params: params
52
+  })
53
+}
54
+
55
+export function getAllProvince(params) {
56
+  console.log('params', params)
57
+  return request({
58
+    url: '/api/login/getallprovince',
59
+    method: 'Get',
60
+    params: params
61
+  })
62
+}
63
+
64
+export function NoPassToLogin(phone, code) {
65
+  const params = {
66
+    phone: phone,
67
+    code: code
68
+  }
69
+  console.log('code', code)
70
+  return request({
71
+    url: '/api/login/nopasslogin',
72
+    method: 'Get',
73
+    params: params
74
+  })
75
+}
76
+
77
+export function getCode(phone) {
78
+  const params = {
79
+    phone: phone
80
+  }
81
+  return request({
82
+    url: '/api/login/getcode',
83
+    method: 'Post',
84
+    params: params
85
+  })
86
+}
87
+
88
+export function NextStep(phone, code) {
89
+  const params = {
90
+    phone: phone,
91
+    code: code
92
+  }
93
+  return request({
94
+    url: '/api/login/nextstep',
95
+    method: 'Get',
96
+    params: params
97
+  })
98
+}
99
+
100
+export function Accomplish(phone, newpassword, confirmpassword) {
101
+  const params = {
102
+    // eslint-disable-next-line no-dupe-keys
103
+    phone,
104
+    phone,
105
+    newpassword: newpassword,
106
+    confirmpassword: confirmpassword
107
+  }
108
+  return request({
109
+    url: '/api/login/accomplish',
110
+    method: 'Post',
111
+    params: params
112
+  })
113
+}
114
+
115
+export function getAllOrgName(id) {
116
+  const params = {
117
+    id: id
118
+  }
119
+  return request({
120
+    url: '/api/login/getallorgname',
121
+    method: 'Get',
122
+    params: params
123
+  })
124
+}
125
+
126
+export function getCityByid(id, params) {
127
+  return request({
128
+    url: '/api/login/getcitybyid?id=' + id,
129
+    method: 'Get',
130
+    params: params
131
+  })
132
+}
133
+
134
+export function getAllOrgType(params) {
135
+  return request({
136
+    url: '/api/login/getallorgtype',
137
+    method: 'Get',
138
+    params: params
139
+  })
140
+}
141
+
142
+export function SaveOrgInformation(data, id) {
143
+  console.log('data是什么', data)
144
+  return request({
145
+    url: '/api/login/saveorginformation?id=' + id,
146
+    method: 'Post',
147
+    data: data
148
+  })
149
+}
150
+
151
+export function getBloodDialysisPatient(page, limit, id) {
152
+  const params = {
153
+    page: page,
154
+    limit: limit,
155
+    id: id
156
+  }
157
+  return request({
158
+    url: '/api/login/getblooddialysispatient',
159
+    method: 'Get',
160
+    params: params
161
+  })
162
+}
163
+
164
+export function GetDoctroAdvice(patientid, orgid, starttime, endtime, searchval) {
165
+  console.log('patientid', patientid)
166
+  console.log('starttime', starttime)
167
+  console.log('orgid', orgid)
168
+  console.log('endtime', endtime)
169
+
170
+  const params = {
171
+    patientid: patientid,
172
+    starttime: starttime,
173
+    orgid: orgid,
174
+    endtime: endtime,
175
+    searchval: searchval
176
+  }
177
+
178
+  return request({
179
+    url: '/api/site/getdoctoradvice',
180
+    method: 'Get',
181
+    params: params
182
+  })
183
+}
184
+
185
+export function SaveSearch(searchval) {
186
+  const params = {
187
+    searchval: searchval
188
+  }
189
+  return request({
190
+    url: '/api/site/savesearch',
191
+    method: 'Get',
192
+    params: params
193
+  })
194
+}
195
+
196
+export function toSeacherDoctorAdvice(patientid, orgid, searchval) {
197
+  const params = {
198
+    patientid: patientid,
199
+    orgid: orgid,
200
+    searchval: searchval
201
+  }
202
+  return request({
203
+    url: '/api/site/toseacherdoctoradvice',
204
+    method: 'Get',
205
+    params: params
206
+  })
207
+}
208
+
209
+export function deleteDoctorAdvice(id, params) {
210
+  return request({
211
+    url: '/api/site/deleteDoctorAdvice?id=' + id,
212
+    method: 'Get',
213
+    params: params
214
+  })
215
+}

+ 15 - 0
src/api/micro/micro.js View File

1
+import request from '@/utils/request';
2
+import org from '../../router/modules/org';
3
+import { link } from 'fs';
4
+
5
+export function ToLogin(tel, psd) {
6
+  const params = {
7
+    tel: tel,
8
+    psd: psd
9
+  }
10
+  return request({
11
+    url: '/api/site/gettologin',
12
+    method: 'Post',
13
+    params: params
14
+  })
15
+}

+ 9 - 0
src/api/mpwechat/material.js View File

1
+import request from '@/utils/request'
2
+
3
+export function GetMaterials(params) {
4
+    return request({
5
+        url: '/api/mpwechat/media/material',
6
+        method: 'get',
7
+        params:params
8
+    })
9
+}

+ 24 - 0
src/api/mpwechat/mpmenus.js View File

1
+import request from '@/utils/request'
2
+
3
+export function GetMenus() {
4
+  return request({
5
+    url: '/api/mpwechat/menus',
6
+    method: 'get',
7
+  })
8
+}
9
+
10
+export function SaveMenus(data) {
11
+  return request({
12
+    url: '/api/mpwechat/savemenus',
13
+    method: 'put',
14
+    data:data,
15
+  })
16
+}
17
+
18
+export function DeleteMenu(data) {
19
+  return request({
20
+    url: '/api/mpwechat/deletemenus',
21
+    method: 'post',
22
+    data:data,
23
+  })
24
+}

+ 47 - 0
src/api/mpwechat/mpreply.js View File

1
+import request from '@/utils/request'
2
+
3
+export function GetSubscribeRplay() {
4
+    return request({
5
+        url: '/api/mpwechat/reply/subscribe',
6
+        method: 'get',
7
+    })
8
+}
9
+
10
+export function SaveSubscribeRplay(data) {
11
+    return request({
12
+        url: '/api/mpwechat/reply/subscribe',
13
+        method: 'put',
14
+        data:data,
15
+    })
16
+}
17
+    
18
+export function GetKeyWordReplys(params) {
19
+    return request({
20
+        url: '/api/mpwechat/reply/kewords',
21
+        method: 'get',
22
+        params:params,
23
+    })
24
+}
25
+
26
+export function CreateKeyWordReply(data) {
27
+    return request({
28
+        url: '/api/mpwechat/reply/keword',
29
+        method: 'post',
30
+        data:data,
31
+    })
32
+}
33
+export function EditKeyWordReply(id,data) {
34
+    return request({
35
+        url: '/api/mpwechat/reply/keword?id='+id,
36
+        method: 'put',
37
+        data:data,
38
+    })
39
+}
40
+
41
+export function DeleteReplys(data) {
42
+    return request({
43
+        url: '/api/mpwechat/replys',
44
+        method: 'delete',
45
+        data:data,
46
+    })
47
+}

+ 15 - 0
src/api/mpwechat/mpwechat.js View File

1
+import request from '@/utils/request'
2
+
3
+export function GetAuthorizationInfo() {
4
+  return request({
5
+    url: '/api/mpwechat/authorization',
6
+    method: 'get',
7
+  })
8
+}
9
+
10
+export function GetAuthUrl() {
11
+  return request({
12
+    url: '/api/mpwechat/authurl',
13
+    method: 'get',
14
+  })
15
+}

+ 32 - 0
src/api/org/orginfo.js View File

1
+import request from '@/utils/request'
2
+
3
+export function GetOrgInfo(){
4
+    return request({
5
+        url:'/api/orginfo/getinfo',
6
+        method:'get',
7
+    })
8
+}
9
+
10
+export function SaveOrgGallery(data){
11
+    return request({
12
+        url:'/api/orginfo/savegallery',
13
+        method:'Post',
14
+        data:data,
15
+    })
16
+}
17
+
18
+export function EditOrgInfo(data){
19
+    return request({
20
+        url:'/api/orginfo/edit',
21
+        method:'Post',
22
+        data:data,
23
+    })
24
+}
25
+
26
+export function DeleteOrgGallery(id){
27
+    return request({
28
+        url:'/api/orginfo/deletegallery',
29
+        method:'delete',
30
+        params:{id:id},
31
+    })
32
+}

+ 244 - 0
src/api/patient/patient.js View File

1
+import request from '@/utils/request'
2
+import org from '../../router/modules/org'
3
+
4
+export function GenerateDialysisNo(phone) {
5
+  console.log('phone是什么', phone)
6
+  return request({
7
+    url: '/api/patient/getneratedialysisno?phone=' + phone,
8
+    method: 'Get'
9
+  })
10
+}
11
+
12
+export function savePatient(data, telephone) {
13
+  console.log('data是什么', data)
14
+  return request({
15
+    url: '/api/patient/savepatient?telephone=' + telephone,
16
+    method: 'Post',
17
+    data: data
18
+  })
19
+}
20
+
21
+export function getCourseManagement(patientid, orgid, startime, endtime) {
22
+  console.log('startime', startime)
23
+  console.log('endtime', endtime)
24
+  const params = {
25
+    patientid: patientid,
26
+    orgid: orgid,
27
+    startime: startime,
28
+    endtime: endtime
29
+  }
30
+  return request({
31
+    url: '/api/patient/getcoursemanagement',
32
+    method: 'Post',
33
+    params: params
34
+  })
35
+}
36
+
37
+export function toDeleteCouseManage(id, orgid) {
38
+  const params = {
39
+    id: id,
40
+    orgid: orgid
41
+  }
42
+
43
+  return request({
44
+    url: '/api/patient/todeletecousemanage',
45
+    method: 'Get',
46
+    params: params
47
+  })
48
+}
49
+
50
+export function getMissionInformation(patientid, orgid, startime, endtime) {
51
+  const params = {
52
+    patientid: patientid,
53
+    orgid: orgid,
54
+    startime: startime,
55
+    endtime: endtime
56
+  }
57
+
58
+  return request({
59
+    url: '/api/patient/getmissioninformation',
60
+    method: 'Get',
61
+    params: params
62
+  })
63
+}
64
+
65
+export function getRecordSave(patientid, orgid, startime, endtime) {
66
+  const params = {
67
+    patientid: patientid,
68
+    orgid: orgid,
69
+    startime: startime,
70
+    endtime: endtime
71
+  }
72
+
73
+  return request({
74
+    url: '/api/patient/getrecordsave',
75
+    method: 'Get',
76
+    params: params
77
+  })
78
+}
79
+
80
+export function getcheckPatientData(patientid, orgid, startime, endtime) {
81
+  const params = {
82
+    patientid: patientid,
83
+    orgid: orgid,
84
+    startime: startime,
85
+    endtime: endtime
86
+  }
87
+
88
+  return request({
89
+    url: '/api/patient/getcheckpatientdata',
90
+    method: 'Get',
91
+    params: params
92
+  })
93
+}
94
+
95
+export function getlongDialysis(patientid, orgid, startime, endtime) {
96
+  const params = {
97
+    patientid: patientid,
98
+    orgid: orgid,
99
+    startime: startime,
100
+    endtime: endtime
101
+  }
102
+
103
+  return request({
104
+    url: '/api/patient/getlongdialysis',
105
+    method: 'Get',
106
+    params: params
107
+  })
108
+}
109
+
110
+export function getDialysRecord(patientid, orgid, startime, endtime) {
111
+  const params = {
112
+    patientid: patientid,
113
+    orgid: orgid,
114
+    startime: startime,
115
+    endtime: endtime
116
+  }
117
+  return request({
118
+    url: '/api/patient/getdialysrecord',
119
+    method: 'Get',
120
+    params: params
121
+  })
122
+}
123
+
124
+export function toSeacherCourseManagement(patientid, orgid, seacherVal) {
125
+  const params = {
126
+    patientid: patientid,
127
+    orgid: orgid,
128
+    seacherVal: seacherVal
129
+  }
130
+
131
+  return request({
132
+    url: '/api/site/toseacherCourseManagement',
133
+    method: 'Get',
134
+    params: params
135
+  })
136
+}
137
+
138
+export function toDeleteSaveRecord(id, params) {
139
+  return request({
140
+    url: '/api/site/todeletesaverecord?id=' + id,
141
+    method: 'Get',
142
+    params: params
143
+  })
144
+}
145
+
146
+export function toSeacherRecord(patientid, orgid, seacherVal) {
147
+  const params = {
148
+    patientid: patientid,
149
+    orgid: orgid,
150
+    seacherVal: seacherVal
151
+  }
152
+  return request({
153
+    url: '/api/site/toSeacherRecord',
154
+    method: 'Get',
155
+    params: params
156
+  })
157
+}
158
+
159
+export function deleteMissionInformation(id, orgid) {
160
+  const params = {
161
+    id: id,
162
+    orgid: orgid
163
+  }
164
+  return request({
165
+    url: '/api/site/deletemissioninformation',
166
+    method: 'Get',
167
+    params: params
168
+  })
169
+}
170
+
171
+export function toSeacherMissionInformation(patientid, orgid, seacherVal) {
172
+  const params = {
173
+    patientid: patientid,
174
+    orgid: orgid,
175
+    seacherVal: seacherVal
176
+  }
177
+  return request({
178
+    url: '/api/patient/toseachermissioninformation',
179
+    method: 'Get',
180
+    params: params
181
+  })
182
+}
183
+
184
+export function GetPatientSchedules(patientid, orgid, startime, endtime) {
185
+  const params = {
186
+    patientid: patientid,
187
+    orgid: orgid,
188
+    startime: startime,
189
+    endtime: endtime
190
+  }
191
+
192
+  return request({
193
+    url: '/api/patient/getpatientschedules',
194
+    method: 'Get',
195
+    params: params
196
+  })
197
+}
198
+
199
+export function deleteScheduleInformation(id, params) {
200
+  return request({
201
+    url: '/api/patient/deletescheduleinformation?id=' + id,
202
+    method: 'Get',
203
+    params: params
204
+  })
205
+}
206
+
207
+export function toSeacherScheduleInformation(patientid, orgid, seacherVal) {
208
+  const params = {
209
+    patientid: patientid,
210
+    orgid: orgid,
211
+    seacherVal: seacherVal
212
+  }
213
+
214
+  return request({
215
+    url: '/api/patient/toseacherscheduleinformation',
216
+    method: 'Get',
217
+    params: params
218
+  })
219
+}
220
+
221
+export function getPatientType(patientid, orgid) {
222
+  const params = {
223
+    patientid: patientid,
224
+    orgid: orgid
225
+  }
226
+  return request({
227
+    url: '/api/patient/getpatienttype',
228
+    method: 'Get',
229
+    params: params
230
+  })
231
+}
232
+
233
+export function checkAll(checkdate, patientid, orgid) {
234
+  const params = {
235
+    checkdate: checkdate,
236
+    patientid: patientid,
237
+    orgid: orgid
238
+  }
239
+  return request({
240
+    url: '/api/patient/checkall',
241
+    method: 'Get',
242
+    params: params
243
+  })
244
+}

+ 10 - 0
src/api/qiniu.js View File

1
+import request from '@/utils/request'
2
+
3
+export function getToken(params) {
4
+  console.log('qiniu是什么===================')
5
+  return request({
6
+    url: '/api/qiniu/uptoken', // 假地址 自行替换
7
+    params: params,
8
+    method: 'get'
9
+  })
10
+}

+ 81 - 0
src/api/role/admin.js View File

1
+import request from '@/utils/request'
2
+
3
+export function adminMainView() {
4
+  return request({
5
+    url: '/api/adminmain',
6
+    method: 'get'
7
+  })
8
+}
9
+
10
+export function getAdmins(page) {
11
+  const params = {
12
+    page: page
13
+  }
14
+  return request({
15
+    url: '/api/admins',
16
+    method: 'get',
17
+    params: params
18
+  })
19
+}
20
+
21
+export function getAddAdminInitData() {
22
+  return request({
23
+    url: '/api/admin/addinit',
24
+    method: 'get'
25
+  })
26
+}
27
+
28
+export function addAdmin(mobile, name, type, title, role, intro) {
29
+  const params = {
30
+    mobile: mobile,
31
+    name: name,
32
+    type: type,
33
+    title: title,
34
+    role: role,
35
+    intro: intro
36
+  }
37
+  return request({
38
+    url: '/api/admin/add',
39
+    method: 'post',
40
+    params: params
41
+  })
42
+}
43
+
44
+export function getModifyAdminInitData(uid) {
45
+  const params = {
46
+    uid: uid
47
+  }
48
+  return request({
49
+    url: '/api/admin/editinit',
50
+    method: 'get',
51
+    params: params
52
+  })
53
+}
54
+
55
+export function modifyAdmin(uid, name, type, title, role, intro) {
56
+  const params = {
57
+    uid: uid,
58
+    name: name,
59
+    type: type,
60
+    title: title,
61
+    role: role,
62
+    intro: intro
63
+  }
64
+  return request({
65
+    url: '/api/admin/edit',
66
+    method: 'post',
67
+    params: params
68
+  })
69
+}
70
+
71
+export function setAdminStatus(uid, enable) {
72
+  const params = {
73
+    uid: uid,
74
+    enable: enable
75
+  }
76
+  return request({
77
+    url: '/api/admin/setstatus',
78
+    method: 'post',
79
+    params: params
80
+  })
81
+}

+ 72 - 0
src/api/role/role.js View File

1
+import request from '@/utils/request'
2
+
3
+export function getRoles(page) {
4
+    const params = {
5
+        page: page,
6
+    }
7
+    return request({
8
+        url: '/api/roles',
9
+        method: 'get',
10
+        params: params,
11
+    })
12
+}
13
+
14
+export function addRole(name, intro) {
15
+    const params = {
16
+        name: name,
17
+        intro: intro
18
+    }
19
+    return request({
20
+        url: '/api/role/create',
21
+        method: 'post',
22
+        params: params,
23
+    })
24
+}
25
+
26
+export function modifyRole(role_id, name, intro) {
27
+    const params = {
28
+        role_id: role_id,
29
+        name: name,
30
+        intro: intro
31
+    }
32
+    return request({
33
+        url: '/api/role/modify',
34
+        method: 'post',
35
+        params: params,
36
+    })
37
+}
38
+
39
+export function setRoleStatus(role_id, enable) {
40
+    const params = {
41
+        role_id: role_id,
42
+        enable: enable,
43
+    }
44
+    return request({
45
+        url: '/api/role/setstatus',
46
+        method: 'post',
47
+        params: params,
48
+    })
49
+}
50
+
51
+export function getEditPurviewInitData(role_id) {
52
+    const params = {
53
+        role_id: role_id,
54
+    }
55
+    return request({
56
+        url: '/role/purview/editinit',
57
+        method: 'get',
58
+        params: params,
59
+    })
60
+}
61
+
62
+export function editPurview(role_id, purview_ids) {
63
+    const params = {
64
+        role_id: role_id,
65
+        purview_ids: purview_ids,
66
+    }
67
+    return request({
68
+        url: '/role/purview/edit',
69
+        method: 'post',
70
+        params: params,
71
+    })
72
+}

+ 84 - 0
src/api/service.js View File

1
+import request from '@/utils/request'
2
+
3
+
4
+export function getServiceList(params){
5
+  return request({
6
+    url:'/api/my/service',
7
+    method:'get',
8
+    params:params
9
+  })
10
+}
11
+
12
+export function getProduct(params){
13
+  return request({
14
+    url:'/api/product',
15
+    method:'get',
16
+    params:params
17
+  })
18
+}
19
+
20
+
21
+export function postOrderInfo(params){
22
+  return request({
23
+    url:'/api/order',
24
+    method:'post',
25
+    params:params
26
+  })
27
+}
28
+
29
+
30
+export function getPayUrl(params){
31
+  return request({
32
+    url:'/api/pay',
33
+    method:'get',
34
+    params:params
35
+  })
36
+}
37
+
38
+export function getOrderInfo(params){
39
+  return request({
40
+    url:'/api/order/get',
41
+    method:'get',
42
+    params:params
43
+  })
44
+}
45
+
46
+export function postOrderPayType(params){
47
+  return request({
48
+    url:'/api/pay/transfer',
49
+    method:'post',
50
+    params:params
51
+  })
52
+}
53
+
54
+export function cancleOrder(params){
55
+  return request({
56
+    url:'/api/order/cancel',
57
+    method:'post',
58
+    params:params
59
+  })
60
+}
61
+
62
+export function getOrderList(params){
63
+  return request({
64
+    url:'/api/order/list',
65
+    method:'get',
66
+    params:params
67
+  })
68
+}
69
+
70
+
71
+export function getHetong(order_id){
72
+  return request({
73
+    url:'/api/order/hetong?order_id='+order_id,
74
+    method:'get',
75
+  })
76
+}
77
+
78
+export function createHetong(order_id, het){
79
+  return request({
80
+    url:'/api/order/hetong?order_id='+order_id,
81
+    method:'Post',
82
+    data:het,
83
+  })
84
+}

BIN
src/assets/401_images/401.gif View File


BIN
src/assets/404_images/404.png View File


BIN
src/assets/404_images/404_cloud.png View File


BIN
src/assets/custom-theme/fonts/element-icons.ttf View File


BIN
src/assets/custom-theme/fonts/element-icons.woff View File


File diff suppressed because it is too large
+ 1 - 0
src/assets/custom-theme/index.css


+ 199 - 0
src/assets/echarts-macarons.js View File

1
+/* eslint-disable */
2
+(function (root, factory) {
3
+    if (typeof define === 'function' && define.amd) {
4
+        // AMD. Register as an anonymous module.
5
+        define(['exports', 'echarts'], factory);
6
+    } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
7
+        // CommonJS
8
+        factory(exports, require('echarts'));
9
+    } else {
10
+        // Browser globals
11
+        factory({}, root.echarts);
12
+    }
13
+}(this, function (exports, echarts) {
14
+    var log = function (msg) {
15
+        if (typeof console !== 'undefined') {
16
+            console && console.error && console.error(msg);
17
+        }
18
+    };
19
+    if (!echarts) {
20
+        log('ECharts is not Loaded');
21
+        return;
22
+    }
23
+
24
+    var colorPalette = [
25
+        '#2ec7c9','#b6a2de','#5ab1ef','#ffb980','#d87a80',
26
+        '#8d98b3','#e5cf0d','#97b552','#95706d','#dc69aa',
27
+        '#07a2a4','#9a7fd1','#588dd5','#f5994e','#c05050',
28
+        '#59678c','#c9ab00','#7eb00a','#6f5553','#c14089'
29
+    ];
30
+
31
+
32
+    var theme = {
33
+        color: colorPalette,
34
+
35
+        title: {
36
+            textStyle: {
37
+                fontWeight: 'normal',
38
+                color: '#008acd'
39
+            }
40
+        },
41
+
42
+        visualMap: {
43
+            itemWidth: 15,
44
+            color: ['#5ab1ef','#e0ffff']
45
+        },
46
+
47
+        toolbox: {
48
+            iconStyle: {
49
+                normal: {
50
+                    borderColor: colorPalette[0]
51
+                }
52
+            }
53
+        },
54
+
55
+        tooltip: {
56
+            backgroundColor: 'rgba(50,50,50,0.5)',
57
+            axisPointer : {
58
+                type : 'line',
59
+                lineStyle : {
60
+                    color: '#008acd'
61
+                },
62
+                crossStyle: {
63
+                    color: '#008acd'
64
+                },
65
+                shadowStyle : {
66
+                    color: 'rgba(200,200,200,0.2)'
67
+                }
68
+            }
69
+        },
70
+
71
+        dataZoom: {
72
+            dataBackgroundColor: '#efefff',
73
+            fillerColor: 'rgba(182,162,222,0.2)',
74
+            handleColor: '#008acd'
75
+        },
76
+
77
+        grid: {
78
+            borderColor: '#eee'
79
+        },
80
+
81
+        categoryAxis: {
82
+            axisLine: {
83
+                lineStyle: {
84
+                    color: '#008acd'
85
+                }
86
+            },
87
+            splitLine: {
88
+                lineStyle: {
89
+                    color: ['#eee']
90
+                }
91
+            }
92
+        },
93
+
94
+        valueAxis: {
95
+            axisLine: {
96
+                lineStyle: {
97
+                    color: '#008acd'
98
+                }
99
+            },
100
+            splitArea : {
101
+                show : true,
102
+                areaStyle : {
103
+                    color: ['rgba(250,250,250,0.1)','rgba(200,200,200,0.1)']
104
+                }
105
+            },
106
+            splitLine: {
107
+                lineStyle: {
108
+                    color: ['#eee']
109
+                }
110
+            }
111
+        },
112
+
113
+        timeline : {
114
+            lineStyle : {
115
+                color : '#008acd'
116
+            },
117
+            controlStyle : {
118
+                normal : { color : '#008acd'},
119
+                emphasis : { color : '#008acd'}
120
+            },
121
+            symbol : 'emptyCircle',
122
+            symbolSize : 3
123
+        },
124
+
125
+        line: {
126
+            smooth : true,
127
+            symbol: 'emptyCircle',
128
+            symbolSize: 3
129
+        },
130
+
131
+        candlestick: {
132
+            itemStyle: {
133
+                normal: {
134
+                    color: '#d87a80',
135
+                    color0: '#2ec7c9',
136
+                    lineStyle: {
137
+                        color: '#d87a80',
138
+                        color0: '#2ec7c9'
139
+                    }
140
+                }
141
+            }
142
+        },
143
+
144
+        scatter: {
145
+            symbol: 'circle',
146
+            symbolSize: 4
147
+        },
148
+
149
+        map: {
150
+            label: {
151
+                normal: {
152
+                    textStyle: {
153
+                        color: '#d87a80'
154
+                    }
155
+                }
156
+            },
157
+            itemStyle: {
158
+                normal: {
159
+                    borderColor: '#eee',
160
+                    areaColor: '#ddd'
161
+                },
162
+                emphasis: {
163
+                    areaColor: '#fe994e'
164
+                }
165
+            }
166
+        },
167
+
168
+        graph: {
169
+            color: colorPalette
170
+        },
171
+
172
+        gauge : {
173
+            axisLine: {
174
+                lineStyle: {
175
+                    color: [[0.2, '#2ec7c9'],[0.8, '#5ab1ef'],[1, '#d87a80']],
176
+                    width: 10
177
+                }
178
+            },
179
+            axisTick: {
180
+                splitNumber: 10,
181
+                length :15,
182
+                lineStyle: {
183
+                    color: 'auto'
184
+                }
185
+            },
186
+            splitLine: {
187
+                length :22,
188
+                lineStyle: {
189
+                    color: 'auto'
190
+                }
191
+            },
192
+            pointer : {
193
+                width : 5
194
+            }
195
+        }
196
+    };
197
+
198
+    echarts.registerTheme('macarons', theme);
199
+}));

+ 3 - 0
src/assets/eventBus.js View File

1
+import Vue from 'vue'
2
+
3
+export default new Vue()

BIN
src/assets/home/analyze.png View File


BIN
src/assets/home/equipment.png View File


BIN
src/assets/home/prescription.png View File


BIN
src/assets/home/record.png View File


BIN
src/assets/home/scheduling.png View File


BIN
src/assets/home/sick.png View File


BIN
src/assets/home/user.png View File


BIN
src/assets/home/userData.png View File


BIN
src/assets/home/wei.jpg View File


+ 370 - 0
src/assets/icon/demo.css View File

1
+*{margin: 0;padding: 0;list-style: none;}
2
+/*
3
+KISSY CSS Reset
4
+理念:1. reset 的目的不是清除浏览器的默认样式,这仅是部分工作。清除和重置是紧密不可分的。
5
+2. reset 的目的不是让默认样式在所有浏览器下一致,而是减少默认样式有可能带来的问题。
6
+3. reset 期望提供一套普适通用的基础样式。但没有银弹,推荐根据具体需求,裁剪和修改后再使用。
7
+特色:1. 适应中文;2. 基于最新主流浏览器。
8
+维护:玉伯<lifesinger@gmail.com>, 正淳<ragecarrier@gmail.com>
9
+ */
10
+
11
+/** 清除内外边距 **/
12
+body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, /* structural elements 结构元素 */
13
+dl, dt, dd, ul, ol, li, /* list elements 列表元素 */
14
+pre, /* text formatting elements 文本格式元素 */
15
+form, fieldset, legend, button, input, textarea, /* form elements 表单元素 */
16
+th, td /* table elements 表格元素 */ {
17
+  margin: 0;
18
+  padding: 0;
19
+}
20
+
21
+/** 设置默认字体 **/
22
+body,
23
+button, input, select, textarea /* for ie */ {
24
+  font: 12px/1.5 tahoma, arial, \5b8b\4f53, sans-serif;
25
+}
26
+h1, h2, h3, h4, h5, h6 { font-size: 100%; }
27
+address, cite, dfn, em, var { font-style: normal; } /* 将斜体扶正 */
28
+code, kbd, pre, samp { font-family: courier new, courier, monospace; } /* 统一等宽字体 */
29
+small { font-size: 12px; } /* 小于 12px 的中文很难阅读,让 small 正常化 */
30
+
31
+/** 重置列表元素 **/
32
+ul, ol { list-style: none; }
33
+
34
+/** 重置文本格式元素 **/
35
+a { text-decoration: none; }
36
+a:hover { text-decoration: underline; }
37
+
38
+
39
+/** 重置表单元素 **/
40
+legend { color: #000; } /* for ie6 */
41
+fieldset, img { border: 0; } /* img 搭车:让链接里的 img 无边框 */
42
+button, input, select, textarea { font-size: 100%; } /* 使得表单元素在 ie 下能继承字体大小 */
43
+/* 注:optgroup 无法扶正 */
44
+
45
+/** 重置表格元素 **/
46
+table { border-collapse: collapse; border-spacing: 0; }
47
+
48
+/* 清除浮动 */
49
+.ks-clear:after, .clear:after {
50
+  content: '\20';
51
+  display: block;
52
+  height: 0;
53
+  clear: both;
54
+}
55
+.ks-clear, .clear {
56
+  *zoom: 1;
57
+}
58
+
59
+.main {
60
+  padding: 30px 100px;
61
+width: 960px;
62
+margin: 0 auto;
63
+}
64
+.main h1{font-size:36px; color:#333; text-align:left;margin-bottom:30px; border-bottom: 1px solid #eee;}
65
+
66
+.helps{margin-top:40px;}
67
+.helps pre{
68
+  padding:20px;
69
+  margin:10px 0;
70
+  border:solid 1px #e7e1cd;
71
+  background-color: #fffdef;
72
+  overflow: auto;
73
+}
74
+
75
+.icon_lists{
76
+  width: 100% !important;
77
+
78
+}
79
+
80
+.icon_lists li{
81
+  float:left;
82
+  width: 100px;
83
+  height:180px;
84
+  text-align: center;
85
+  list-style: none !important;
86
+}
87
+.icon_lists .icon{
88
+  font-size: 42px;
89
+  line-height: 100px;
90
+  margin: 10px 0;
91
+  color:#333;
92
+  -webkit-transition: font-size 0.25s ease-out 0s;
93
+  -moz-transition: font-size 0.25s ease-out 0s;
94
+  transition: font-size 0.25s ease-out 0s;
95
+
96
+}
97
+.icon_lists .icon:hover{
98
+  font-size: 100px;
99
+}
100
+
101
+
102
+
103
+.markdown {
104
+  color: #666;
105
+  font-size: 14px;
106
+  line-height: 1.8;
107
+}
108
+
109
+.highlight {
110
+  line-height: 1.5;
111
+}
112
+
113
+.markdown img {
114
+  vertical-align: middle;
115
+  max-width: 100%;
116
+}
117
+
118
+.markdown h1 {
119
+  color: #404040;
120
+  font-weight: 500;
121
+  line-height: 40px;
122
+  margin-bottom: 24px;
123
+}
124
+
125
+.markdown h2,
126
+.markdown h3,
127
+.markdown h4,
128
+.markdown h5,
129
+.markdown h6 {
130
+  color: #404040;
131
+  margin: 1.6em 0 0.6em 0;
132
+  font-weight: 500;
133
+  clear: both;
134
+}
135
+
136
+.markdown h1 {
137
+  font-size: 28px;
138
+}
139
+
140
+.markdown h2 {
141
+  font-size: 22px;
142
+}
143
+
144
+.markdown h3 {
145
+  font-size: 16px;
146
+}
147
+
148
+.markdown h4 {
149
+  font-size: 14px;
150
+}
151
+
152
+.markdown h5 {
153
+  font-size: 12px;
154
+}
155
+
156
+.markdown h6 {
157
+  font-size: 12px;
158
+}
159
+
160
+.markdown hr {
161
+  height: 1px;
162
+  border: 0;
163
+  background: #e9e9e9;
164
+  margin: 16px 0;
165
+  clear: both;
166
+}
167
+
168
+.markdown p,
169
+.markdown pre {
170
+  margin: 1em 0;
171
+}
172
+
173
+.markdown > p,
174
+.markdown > blockquote,
175
+.markdown > .highlight,
176
+.markdown > ol,
177
+.markdown > ul {
178
+  width: 80%;
179
+}
180
+
181
+.markdown ul > li {
182
+  list-style: circle;
183
+}
184
+
185
+.markdown > ul li,
186
+.markdown blockquote ul > li {
187
+  margin-left: 20px;
188
+  padding-left: 4px;
189
+}
190
+
191
+.markdown > ul li p,
192
+.markdown > ol li p {
193
+  margin: 0.6em 0;
194
+}
195
+
196
+.markdown ol > li {
197
+  list-style: decimal;
198
+}
199
+
200
+.markdown > ol li,
201
+.markdown blockquote ol > li {
202
+  margin-left: 20px;
203
+  padding-left: 4px;
204
+}
205
+
206
+.markdown code {
207
+  margin: 0 3px;
208
+  padding: 0 5px;
209
+  background: #eee;
210
+  border-radius: 3px;
211
+}
212
+
213
+.markdown pre {
214
+  border-radius: 6px;
215
+  background: #f7f7f7;
216
+  padding: 20px;
217
+}
218
+
219
+.markdown pre code {
220
+  border: none;
221
+  background: #f7f7f7;
222
+  margin: 0;
223
+}
224
+
225
+.markdown strong,
226
+.markdown b {
227
+  font-weight: 600;
228
+}
229
+
230
+.markdown > table {
231
+  border-collapse: collapse;
232
+  border-spacing: 0px;
233
+  empty-cells: show;
234
+  border: 1px solid #e9e9e9;
235
+  width: 95%;
236
+  margin-bottom: 24px;
237
+}
238
+
239
+.markdown > table th {
240
+  white-space: nowrap;
241
+  color: #333;
242
+  font-weight: 600;
243
+
244
+}
245
+
246
+.markdown > table th,
247
+.markdown > table td {
248
+  border: 1px solid #e9e9e9;
249
+  padding: 8px 16px;
250
+  text-align: left;
251
+}
252
+
253
+.markdown > table th {
254
+  background: #F7F7F7;
255
+}
256
+
257
+.markdown blockquote {
258
+  font-size: 90%;
259
+  color: #999;
260
+  border-left: 4px solid #e9e9e9;
261
+  padding-left: 0.8em;
262
+  margin: 1em 0;
263
+  font-style: italic;
264
+}
265
+
266
+.markdown blockquote p {
267
+  margin: 0;
268
+}
269
+
270
+.markdown .anchor {
271
+  opacity: 0;
272
+  transition: opacity 0.3s ease;
273
+  margin-left: 8px;
274
+}
275
+
276
+.markdown .waiting {
277
+  color: #ccc;
278
+}
279
+
280
+.markdown h1:hover .anchor,
281
+.markdown h2:hover .anchor,
282
+.markdown h3:hover .anchor,
283
+.markdown h4:hover .anchor,
284
+.markdown h5:hover .anchor,
285
+.markdown h6:hover .anchor {
286
+  opacity: 1;
287
+  display: inline-block;
288
+}
289
+
290
+.markdown > br,
291
+.markdown > p > br {
292
+  clear: both;
293
+}
294
+
295
+
296
+.hljs {
297
+  display: block;
298
+  background: white;
299
+  padding: 0.5em;
300
+  color: #333333;
301
+  overflow-x: auto;
302
+}
303
+
304
+.hljs-comment,
305
+.hljs-meta {
306
+  color: #969896;
307
+}
308
+
309
+.hljs-string,
310
+.hljs-variable,
311
+.hljs-template-variable,
312
+.hljs-strong,
313
+.hljs-emphasis,
314
+.hljs-quote {
315
+  color: #df5000;
316
+}
317
+
318
+.hljs-keyword,
319
+.hljs-selector-tag,
320
+.hljs-type {
321
+  color: #a71d5d;
322
+}
323
+
324
+.hljs-literal,
325
+.hljs-symbol,
326
+.hljs-bullet,
327
+.hljs-attribute {
328
+  color: #0086b3;
329
+}
330
+
331
+.hljs-section,
332
+.hljs-name {
333
+  color: #63a35c;
334
+}
335
+
336
+.hljs-tag {
337
+  color: #333333;
338
+}
339
+
340
+.hljs-title,
341
+.hljs-attr,
342
+.hljs-selector-id,
343
+.hljs-selector-class,
344
+.hljs-selector-attr,
345
+.hljs-selector-pseudo {
346
+  color: #795da3;
347
+}
348
+
349
+.hljs-addition {
350
+  color: #55a532;
351
+  background-color: #eaffea;
352
+}
353
+
354
+.hljs-deletion {
355
+  color: #bd2c00;
356
+  background-color: #ffecec;
357
+}
358
+
359
+.hljs-link {
360
+  text-decoration: underline;
361
+}
362
+
363
+pre{
364
+  background: #fff;
365
+}
366
+
367
+
368
+
369
+
370
+

+ 52 - 0
src/assets/icon/demo_fontclass.html View File

1
+
2
+<!DOCTYPE html>
3
+<html>
4
+<head>
5
+    <meta charset="utf-8"/>
6
+    <title>IconFont</title>
7
+    <link rel="stylesheet" href="demo.css">
8
+    <link rel="stylesheet" href="iconfont.css">
9
+</head>
10
+<body>
11
+    <div class="main markdown">
12
+        <h1>IconFont 图标</h1>
13
+        <ul class="icon_lists clear">
14
+            
15
+                <li>
16
+                <i class="icon iconfont icon-activity"></i>
17
+                    <div class="name">activity</div>
18
+                    <div class="fontclass">.icon-activity</div>
19
+                </li>
20
+            
21
+                <li>
22
+                <i class="icon iconfont icon-editor"></i>
23
+                    <div class="name">editor</div>
24
+                    <div class="fontclass">.icon-editor</div>
25
+                </li>
26
+            
27
+        </ul>
28
+
29
+        <h2 id="font-class-">font-class引用</h2>
30
+        <hr>
31
+
32
+        <p>font-class是unicode使用方式的一种变种,主要是解决unicode书写不直观,语意不明确的问题。</p>
33
+        <p>与unicode使用方式相比,具有如下特点:</p>
34
+        <ul>
35
+        <li>兼容性良好,支持ie8+,及所有现代浏览器。</li>
36
+        <li>相比于unicode语意明确,书写更直观。可以很容易分辨这个icon是什么。</li>
37
+        <li>因为使用class来定义图标,所以当要替换图标时,只需要修改class里面的unicode引用。</li>
38
+        <li>不过因为本质上还是使用的字体,所以多色图标还是不支持的。</li>
39
+        </ul>
40
+        <p>使用步骤如下:</p>
41
+        <h3 id="-fontclass-">第一步:引入项目下面生成的fontclass代码:</h3>
42
+
43
+
44
+        <pre><code class="lang-js hljs javascript"><span class="hljs-comment">&lt;link rel="stylesheet" type="text/css" href="./iconfont.css"&gt;</span></code></pre>
45
+        <h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
46
+        <pre><code class="lang-css hljs">&lt;<span class="hljs-selector-tag">i</span> <span class="hljs-selector-tag">class</span>="<span class="hljs-selector-tag">iconfont</span> <span class="hljs-selector-tag">icon-xxx</span>"&gt;&lt;/<span class="hljs-selector-tag">i</span>&gt;</code></pre>
47
+        <blockquote>
48
+        <p>"iconfont"是你项目下的font-family。可以通过编辑项目查看,默认是"iconfont"。</p>
49
+        </blockquote>
50
+    </div>
51
+</body>
52
+</html>

+ 79 - 0
src/assets/icon/demo_symbol.html View File

1
+
2
+<!DOCTYPE html>
3
+<html>
4
+<head>
5
+    <meta charset="utf-8"/>
6
+    <title>IconFont</title>
7
+    <link rel="stylesheet" href="demo.css">
8
+    <script src="iconfont.js"></script>
9
+
10
+    <style type="text/css">
11
+        .icon {
12
+          /* 通过设置 font-size 来改变图标大小 */
13
+          width: 1em; height: 1em;
14
+          /* 图标和文字相邻时,垂直对齐 */
15
+          vertical-align: -0.15em;
16
+          /* 通过设置 color 来改变 SVG 的颜色/fill */
17
+          fill: currentColor;
18
+          /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
19
+             normalize.css 中也包含这行 */
20
+          overflow: hidden;
21
+        }
22
+
23
+    </style>
24
+</head>
25
+<body>
26
+    <div class="main markdown">
27
+        <h1>IconFont 图标</h1>
28
+        <ul class="icon_lists clear">
29
+            
30
+                <li>
31
+                    <svg class="icon" aria-hidden="true">
32
+                        <use xlink:href="#icon-activity"></use>
33
+                    </svg>
34
+                    <div class="name">activity</div>
35
+                    <div class="fontclass">#icon-activity</div>
36
+                </li>
37
+            
38
+                <li>
39
+                    <svg class="icon" aria-hidden="true">
40
+                        <use xlink:href="#icon-editor"></use>
41
+                    </svg>
42
+                    <div class="name">editor</div>
43
+                    <div class="fontclass">#icon-editor</div>
44
+                </li>
45
+            
46
+        </ul>
47
+
48
+
49
+        <h2 id="symbol-">symbol引用</h2>
50
+        <hr>
51
+
52
+        <p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>
53
+        这种用法其实是做了一个svg的集合,与另外两种相比具有如下特点:</p>
54
+        <ul>
55
+          <li>支持多色图标了,不再受单色限制。</li>
56
+          <li>通过一些技巧,支持像字体那样,通过<code>font-size</code>,<code>color</code>来调整样式。</li>
57
+          <li>兼容性较差,支持 ie9+,及现代浏览器。</li>
58
+          <li>浏览器渲染svg的性能一般,还不如png。</li>
59
+        </ul>
60
+        <p>使用步骤如下:</p>
61
+        <h3 id="-symbol-">第一步:引入项目下面生成的symbol代码:</h3>
62
+        <pre><code class="lang-js hljs javascript"><span class="hljs-comment">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;</span></code></pre>
63
+        <h3 id="-css-">第二步:加入通用css代码(引入一次就行):</h3>
64
+        <pre><code class="lang-js hljs javascript">&lt;style type=<span class="hljs-string">"text/css"</span>&gt;
65
+.icon {
66
+   width: <span class="hljs-number">1</span>em; height: <span class="hljs-number">1</span>em;
67
+   vertical-align: <span class="hljs-number">-0.15</span>em;
68
+   fill: currentColor;
69
+   overflow: hidden;
70
+}
71
+&lt;<span class="hljs-regexp">/style&gt;</span></code></pre>
72
+        <h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
73
+        <pre><code class="lang-js hljs javascript">&lt;svg <span class="hljs-class"><span class="hljs-keyword">class</span></span>=<span class="hljs-string">"icon"</span> aria-hidden=<span class="hljs-string">"true"</span>&gt;<span class="xml"><span class="hljs-tag">
74
+  &lt;<span class="hljs-name">use</span> <span class="hljs-attr">xlink:href</span>=<span class="hljs-string">"#icon-xxx"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">use</span>&gt;</span>
75
+</span>&lt;<span class="hljs-regexp">/svg&gt;
76
+        </span></code></pre>
77
+    </div>
78
+</body>
79
+</html>

+ 90 - 0
src/assets/icon/demo_unicode.html View File

1
+
2
+<!DOCTYPE html>
3
+<html>
4
+<head>
5
+    <meta charset="utf-8"/>
6
+    <title>IconFont</title>
7
+    <link rel="stylesheet" href="demo.css">
8
+
9
+    <style type="text/css">
10
+
11
+        @font-face {font-family: "iconfont";
12
+          src: url('iconfont.eot'); /* IE9*/
13
+          src: url('iconfont.eot#iefix') format('embedded-opentype'), /* IE6-IE8 */
14
+          url('iconfont.woff') format('woff'), /* chrome, firefox */
15
+          url('iconfont.ttf') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
16
+          url('iconfont.svg#iconfont') format('svg'); /* iOS 4.1- */
17
+        }
18
+
19
+        .iconfont {
20
+          font-family:"iconfont" !important;
21
+          font-size:16px;
22
+          font-style:normal;
23
+          -webkit-font-smoothing: antialiased;
24
+          -webkit-text-stroke-width: 0.2px;
25
+          -moz-osx-font-smoothing: grayscale;
26
+        }
27
+
28
+    </style>
29
+</head>
30
+<body>
31
+    <div class="main markdown">
32
+        <h1>IconFont 图标</h1>
33
+        <ul class="icon_lists clear">
34
+            
35
+                <li>
36
+                <i class="icon iconfont">&#xe6de;</i>
37
+                    <div class="name">activity</div>
38
+                    <div class="code">&amp;#xe6de;</div>
39
+                </li>
40
+            
41
+                <li>
42
+                <i class="icon iconfont">&#xe6f5;</i>
43
+                    <div class="name">editor</div>
44
+                    <div class="code">&amp;#xe6f5;</div>
45
+                </li>
46
+            
47
+        </ul>
48
+        <h2 id="unicode-">unicode引用</h2>
49
+        <hr>
50
+
51
+        <p>unicode是字体在网页端最原始的应用方式,特点是:</p>
52
+        <ul>
53
+        <li>兼容性最好,支持ie6+,及所有现代浏览器。</li>
54
+        <li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
55
+        <li>但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。</li>
56
+        </ul>
57
+        <blockquote>
58
+        <p>注意:新版iconfont支持多色图标,这些多色图标在unicode模式下将不能使用,如果有需求建议使用symbol的引用方式</p>
59
+        </blockquote>
60
+        <p>unicode使用步骤如下:</p>
61
+        <h3 id="-font-face">第一步:拷贝项目下面生成的font-face</h3>
62
+        <pre><code class="lang-js hljs javascript">@font-face {
63
+  font-family: <span class="hljs-string">'iconfont'</span>;
64
+  src: url(<span class="hljs-string">'iconfont.eot'</span>);
65
+  src: url(<span class="hljs-string">'iconfont.eot?#iefix'</span>) format(<span class="hljs-string">'embedded-opentype'</span>),
66
+  url(<span class="hljs-string">'iconfont.woff'</span>) format(<span class="hljs-string">'woff'</span>),
67
+  url(<span class="hljs-string">'iconfont.ttf'</span>) format(<span class="hljs-string">'truetype'</span>),
68
+  url(<span class="hljs-string">'iconfont.svg#iconfont'</span>) format(<span class="hljs-string">'svg'</span>);
69
+}
70
+</code></pre>
71
+        <h3 id="-iconfont-">第二步:定义使用iconfont的样式</h3>
72
+        <pre><code class="lang-js hljs javascript">.iconfont{
73
+  font-family:<span class="hljs-string">"iconfont"</span> !important;
74
+  font-size:<span class="hljs-number">16</span>px;font-style:normal;
75
+  -webkit-font-smoothing: antialiased;
76
+  -webkit-text-stroke-width: <span class="hljs-number">0.2</span>px;
77
+  -moz-osx-font-smoothing: grayscale;
78
+}
79
+</code></pre>
80
+        <h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>
81
+        <pre><code class="lang-js hljs javascript">&lt;i <span class="hljs-class"><span class="hljs-keyword">class</span></span>=<span class="hljs-string">"iconfont"</span>&gt;&amp;#x33;<span class="xml"><span class="hljs-tag">&lt;/<span class="hljs-name">i</span>&gt;</span></span></code></pre>
82
+
83
+        <blockquote>
84
+        <p>"iconfont"是你项目下的font-family。可以通过编辑项目查看,默认是"iconfont"。</p>
85
+        </blockquote>
86
+    </div>
87
+
88
+
89
+</body>
90
+</html>

+ 21 - 0
src/assets/icon/iconfont.css View File

1
+
2
+@font-face {font-family: "iconfont";
3
+  src: url('iconfont.eot?t=1540390919997'); /* IE9*/
4
+  src: url('iconfont.eot?t=1540390919997#iefix') format('embedded-opentype'), /* IE6-IE8 */
5
+  url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAATgAAsAAAAAB5wAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFY9VEjnY21hcAAAAYAAAABWAAABhmnZ0opnbHlmAAAB2AAAARMAAAGARACD3GhlYWQAAALsAAAALwAAADYTDIYbaGhlYQAAAxwAAAAcAAAAJAfeA4RobXR4AAADOAAAAAwAAAAMDAAAAGxvY2EAAANEAAAACAAAAAgAfADAbWF4cAAAA0wAAAAfAAAAIAESAGRuYW1lAAADbAAAAUUAAAJtPlT+fXBvc3QAAAS0AAAAKgAAADvAZlSmeJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2BkYWCcwMDKwMHUyXSGgYGhH0IzvmYwYuRgYGBiYGVmwAoC0lxTGBye3Xv2lbnhfwNDDHMDQwNQmBEkBwABmQ22eJztkLERgDAMA99OSMExCAUDUTE6ZTZIHRQHtkB3b51lVwIWIIlDZLALY+hUapEn1shz/BS54fWurXf4XDLdSrhrFH5tMfd389HWZDRb2wR/AEzpFJIAAHicVU9NToNAFH7fTIRADCmU0oQWZWiHuNFUoO1KZePKA7gywaVXcGNX3sKkR8Eb9AJNunXnBaAORRt8mfd972/mfUMnRPtvXvCQdDqnO3qgRyKppSKa20Jm1+nA9ZLFDY7sBRByMs/iSAtwZAu6fYahuMXSvgJEssjiiYg01xt2Yh4C1SdYXpUrZ+yUyt9QlSz/y1ajKTAdsfzA9T3Ichxrf8BOnHKO7QfvNYVei2BP6395PK7eAwnIgL0Gsn5Wr6uzbomIkTJesB2d0gURvGQJpTPSobky0ga2sH+Fd7+WxfgyfRMzo++b9cZAYTlVibBZWe864h28GAZmpt836o3pXzZtlqvNaqAq28Hm2g+0Cz92AHicY2BkYGAA4uuNR03j+W2+MnCzMIDA9W8L2RH0/w8sDMwKQC4HAxNIFABGvAsNAHicY2BkYGBu+N/AEMPCAAJAkpEBFTADAEcJAmwEAAAABAAAAAQAAAAAAAAAAHwAwHicY2BkYGBgZohgYGUAASYg5gJCBob/YD4DABGmAXcAeJxlj01OwzAQhV/6B6QSqqhgh+QFYgEo/RGrblhUavdddN+mTpsqiSPHrdQDcB6OwAk4AtyAO/BIJ5s2lsffvHljTwDc4Acejt8t95E9XDI7cg0XuBeuU38QbpBfhJto41W4Rf1N2MczpsJtdGF5g9e4YvaEd2EPHXwI13CNT+E69S/hBvlbuIk7/Aq30PHqwj7mXle4jUcv9sdWL5xeqeVBxaHJIpM5v4KZXu+Sha3S6pxrW8QmU4OgX0lTnWlb3VPs10PnIhVZk6oJqzpJjMqt2erQBRvn8lGvF4kehCblWGP+tsYCjnEFhSUOjDFCGGSIyujoO1Vm9K+xQ8Jee1Y9zed0WxTU/3OFAQL0z1xTurLSeTpPgT1fG1J1dCtuy56UNJFezUkSskJe1rZUQuoBNmVXjhF6XNGJPyhnSP8ACVpuyAAAAHicY2BigAAuBuyAmZGJkZmRhYEjMbkksyyzpJItNSWzJL+IgQEAQDkGHgAA') format('woff'),
6
+  url('iconfont.ttf?t=1540390919997') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
7
+  url('iconfont.svg?t=1540390919997#iconfont') format('svg'); /* iOS 4.1- */
8
+}
9
+
10
+.iconfont {
11
+  font-family:"iconfont" !important;
12
+  font-size:16px;
13
+  font-style:normal;
14
+  -webkit-font-smoothing: antialiased;
15
+  -moz-osx-font-smoothing: grayscale;
16
+}
17
+
18
+.icon-activity:before { content: "\e6de"; }
19
+
20
+.icon-editor:before { content: "\e6f5"; }
21
+

BIN
src/assets/icon/iconfont.eot View File


+ 1 - 0
src/assets/icon/iconfont.js View File

1
+(function(window){var svgSprite='<svg><symbol id="icon-activity" viewBox="0 0 1024 1024"><path d="M800 845.088c0 1.76-0.736 2.784-0.096 2.88l-574.656 0.416C224.992 848.192 224 847.04 224 845.088v-477.12h576v477.12zM224 210.88c0-1.728 0.64-2.752 0.096-2.912H352V224a32 32 0 1 0 64 0v-16h192V224a32 32 0 1 0 64 0v-16h127.008a4.736 4.736 0 0 1 0.992 2.88V304H224V210.88zM799.84 144H672V128a32 32 0 0 0-64 0v16h-192V128a32 32 0 0 0-64 0v16H223.712C188.576 144 160 174.016 160 210.88V845.12c0 36.896 28.608 66.88 63.744 66.88h576.512c35.136 0 63.744-29.984 63.744-66.88V210.88c0-36.896-28.768-66.912-64.16-66.912z"  ></path><path d="M384 560h256a32 32 0 0 0 0-64h-256a32 32 0 0 0 0 64M384 720h256a32 32 0 0 0 0-64h-256a32 32 0 0 0 0 64"  ></path></symbol><symbol id="icon-editor" viewBox="0 0 1024 1024"><path d="M489.376 534.624a31.904 31.904 0 0 0 45.248 0l304-304a31.968 31.968 0 1 0-45.248-45.248l-304 304a31.968 31.968 0 0 0 0 45.248"  ></path><path d="M832 480a32 32 0 0 0-32 32l0.256 288L224 800.256 223.744 224H512a32 32 0 0 0 0-64H223.744A63.84 63.84 0 0 0 160 223.744v576.512C160 835.392 188.608 864 223.744 864h576.512A63.84 63.84 0 0 0 864 800.256V512a32 32 0 0 0-32-32"  ></path></symbol></svg>';var script=function(){var scripts=document.getElementsByTagName("script");return scripts[scripts.length-1]}();var shouldInjectCss=script.getAttribute("data-injectcss");var ready=function(fn){if(document.addEventListener){if(~["complete","loaded","interactive"].indexOf(document.readyState)){setTimeout(fn,0)}else{var loadFn=function(){document.removeEventListener("DOMContentLoaded",loadFn,false);fn()};document.addEventListener("DOMContentLoaded",loadFn,false)}}else if(document.attachEvent){IEContentLoaded(window,fn)}function IEContentLoaded(w,fn){var d=w.document,done=false,init=function(){if(!done){done=true;fn()}};var polling=function(){try{d.documentElement.doScroll("left")}catch(e){setTimeout(polling,50);return}init()};polling();d.onreadystatechange=function(){if(d.readyState=="complete"){d.onreadystatechange=null;init()}}}};var before=function(el,target){target.parentNode.insertBefore(el,target)};var prepend=function(el,target){if(target.firstChild){before(el,target.firstChild)}else{target.appendChild(el)}};function appendSvg(){var div,svg;div=document.createElement("div");div.innerHTML=svgSprite;svgSprite=null;svg=div.getElementsByTagName("svg")[0];if(svg){svg.setAttribute("aria-hidden","true");svg.style.position="absolute";svg.style.width=0;svg.style.height=0;svg.style.overflow="hidden";prepend(svg,document.body)}}if(shouldInjectCss&&!window.__iconfont__svg__cssinject__){window.__iconfont__svg__cssinject__=true;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(e){console&&console.log(e)}}ready(appendSvg)})(window)

+ 32 - 0
src/assets/icon/iconfont.svg View File

1
+<?xml version="1.0" standalone="no"?>
2
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+<!--
4
+2013-9-30: Created.
5
+-->
6
+<svg>
7
+<metadata>
8
+Created by iconfont
9
+</metadata>
10
+<defs>
11
+
12
+<font id="iconfont" horiz-adv-x="1024" >
13
+  <font-face
14
+    font-family="iconfont"
15
+    font-weight="500"
16
+    font-stretch="normal"
17
+    units-per-em="1024"
18
+    ascent="896"
19
+    descent="-128"
20
+  />
21
+    <missing-glyph />
22
+    
23
+    <glyph glyph-name="activity" unicode="&#59102;" d="M800 50.912c0-1.76-0.736-2.784-0.096-2.88l-574.656-0.416C224.992 47.808 224 48.96 224 50.912v477.12h576v-477.12zM224 685.12c0 1.728 0.64 2.752 0.096 2.912H352V672a32 32 0 1 1 64 0v16h192V672a32 32 0 1 1 64 0v16h127.008a4.736 4.736 0 0 0 0.992-2.88V592H224V685.12zM799.84 752H672V768a32 32 0 0 1-64 0v-16h-192V768a32 32 0 0 1-64 0v-16H223.712C188.576 752 160 721.984 160 685.12V50.88c0-36.896 28.608-66.88 63.744-66.88h576.512c35.136 0 63.744 29.984 63.744 66.88V685.12c0 36.896-28.768 66.912-64.16 66.912zM384 336h256a32 32 0 0 1 0 64h-256a32 32 0 0 1 0-64M384 176h256a32 32 0 0 1 0 64h-256a32 32 0 0 1 0-64"  horiz-adv-x="1024" />
24
+
25
+    
26
+    <glyph glyph-name="editor" unicode="&#59125;" d="M489.376 361.376a31.904 31.904 0 0 1 45.248 0l304 304a31.968 31.968 0 1 1-45.248 45.248l-304-304a31.968 31.968 0 0 1 0-45.248M832 416a32 32 0 0 1-32-32l0.256-288L224 95.744 223.744 672H512a32 32 0 0 1 0 64H223.744A63.84 63.84 0 0 1 160 672.256v-576.512C160 60.608 188.608 32 223.744 32h576.512A63.84 63.84 0 0 1 864 95.744V384a32 32 0 0 1-32 32"  horiz-adv-x="1024" />
27
+
28
+    
29
+
30
+
31
+  </font>
32
+</defs></svg>

BIN
src/assets/icon/iconfont.ttf View File


BIN
src/assets/icon/iconfont.woff View File


+ 370 - 0
src/assets/iconfont/demo.css View File

1
+*{margin: 0;padding: 0;list-style: none;}
2
+/*
3
+KISSY CSS Reset
4
+理念:1. reset 的目的不是清除浏览器的默认样式,这仅是部分工作。清除和重置是紧密不可分的。
5
+2. reset 的目的不是让默认样式在所有浏览器下一致,而是减少默认样式有可能带来的问题。
6
+3. reset 期望提供一套普适通用的基础样式。但没有银弹,推荐根据具体需求,裁剪和修改后再使用。
7
+特色:1. 适应中文;2. 基于最新主流浏览器。
8
+维护:玉伯<lifesinger@gmail.com>, 正淳<ragecarrier@gmail.com>
9
+ */
10
+
11
+/** 清除内外边距 **/
12
+body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, /* structural elements 结构元素 */
13
+dl, dt, dd, ul, ol, li, /* list elements 列表元素 */
14
+pre, /* text formatting elements 文本格式元素 */
15
+form, fieldset, legend, button, input, textarea, /* form elements 表单元素 */
16
+th, td /* table elements 表格元素 */ {
17
+  margin: 0;
18
+  padding: 0;
19
+}
20
+
21
+/** 设置默认字体 **/
22
+body,
23
+button, input, select, textarea /* for ie */ {
24
+  font: 12px/1.5 tahoma, arial, \5b8b\4f53, sans-serif;
25
+}
26
+h1, h2, h3, h4, h5, h6 { font-size: 100%; }
27
+address, cite, dfn, em, var { font-style: normal; } /* 将斜体扶正 */
28
+code, kbd, pre, samp { font-family: courier new, courier, monospace; } /* 统一等宽字体 */
29
+small { font-size: 12px; } /* 小于 12px 的中文很难阅读,让 small 正常化 */
30
+
31
+/** 重置列表元素 **/
32
+ul, ol { list-style: none; }
33
+
34
+/** 重置文本格式元素 **/
35
+a { text-decoration: none; }
36
+a:hover { text-decoration: underline; }
37
+
38
+
39
+/** 重置表单元素 **/
40
+legend { color: #000; } /* for ie6 */
41
+fieldset, img { border: 0; } /* img 搭车:让链接里的 img 无边框 */
42
+button, input, select, textarea { font-size: 100%; } /* 使得表单元素在 ie 下能继承字体大小 */
43
+/* 注:optgroup 无法扶正 */
44
+
45
+/** 重置表格元素 **/
46
+table { border-collapse: collapse; border-spacing: 0; }
47
+
48
+/* 清除浮动 */
49
+.ks-clear:after, .clear:after {
50
+  content: '\20';
51
+  display: block;
52
+  height: 0;
53
+  clear: both;
54
+}
55
+.ks-clear, .clear {
56
+  *zoom: 1;
57
+}
58
+
59
+.main {
60
+  padding: 30px 100px;
61
+width: 960px;
62
+margin: 0 auto;
63
+}
64
+.main h1{font-size:36px; color:#333; text-align:left;margin-bottom:30px; border-bottom: 1px solid #eee;}
65
+
66
+.helps{margin-top:40px;}
67
+.helps pre{
68
+  padding:20px;
69
+  margin:10px 0;
70
+  border:solid 1px #e7e1cd;
71
+  background-color: #fffdef;
72
+  overflow: auto;
73
+}
74
+
75
+.icon_lists{
76
+  width: 100% !important;
77
+
78
+}
79
+
80
+.icon_lists li{
81
+  float:left;
82
+  width: 100px;
83
+  height:180px;
84
+  text-align: center;
85
+  list-style: none !important;
86
+}
87
+.icon_lists .icon{
88
+  font-size: 42px;
89
+  line-height: 100px;
90
+  margin: 10px 0;
91
+  color:#333;
92
+  -webkit-transition: font-size 0.25s ease-out 0s;
93
+  -moz-transition: font-size 0.25s ease-out 0s;
94
+  transition: font-size 0.25s ease-out 0s;
95
+
96
+}
97
+.icon_lists .icon:hover{
98
+  font-size: 100px;
99
+}
100
+
101
+
102
+
103
+.markdown {
104
+  color: #666;
105
+  font-size: 14px;
106
+  line-height: 1.8;
107
+}
108
+
109
+.highlight {
110
+  line-height: 1.5;
111
+}
112
+
113
+.markdown img {
114
+  vertical-align: middle;
115
+  max-width: 100%;
116
+}
117
+
118
+.markdown h1 {
119
+  color: #404040;
120
+  font-weight: 500;
121
+  line-height: 40px;
122
+  margin-bottom: 24px;
123
+}
124
+
125
+.markdown h2,
126
+.markdown h3,
127
+.markdown h4,
128
+.markdown h5,
129
+.markdown h6 {
130
+  color: #404040;
131
+  margin: 1.6em 0 0.6em 0;
132
+  font-weight: 500;
133
+  clear: both;
134
+}
135
+
136
+.markdown h1 {
137
+  font-size: 28px;
138
+}
139
+
140
+.markdown h2 {
141
+  font-size: 22px;
142
+}
143
+
144
+.markdown h3 {
145
+  font-size: 16px;
146
+}
147
+
148
+.markdown h4 {
149
+  font-size: 14px;
150
+}
151
+
152
+.markdown h5 {
153
+  font-size: 12px;
154
+}
155
+
156
+.markdown h6 {
157
+  font-size: 12px;
158
+}
159
+
160
+.markdown hr {
161
+  height: 1px;
162
+  border: 0;
163
+  background: #e9e9e9;
164
+  margin: 16px 0;
165
+  clear: both;
166
+}
167
+
168
+.markdown p,
169
+.markdown pre {
170
+  margin: 1em 0;
171
+}
172
+
173
+.markdown > p,
174
+.markdown > blockquote,
175
+.markdown > .highlight,
176
+.markdown > ol,
177
+.markdown > ul {
178
+  width: 80%;
179
+}
180
+
181
+.markdown ul > li {
182
+  list-style: circle;
183
+}
184
+
185
+.markdown > ul li,
186
+.markdown blockquote ul > li {
187
+  margin-left: 20px;
188
+  padding-left: 4px;
189
+}
190
+
191
+.markdown > ul li p,
192
+.markdown > ol li p {
193
+  margin: 0.6em 0;
194
+}
195
+
196
+.markdown ol > li {
197
+  list-style: decimal;
198
+}
199
+
200
+.markdown > ol li,
201
+.markdown blockquote ol > li {
202
+  margin-left: 20px;
203
+  padding-left: 4px;
204
+}
205
+
206
+.markdown code {
207
+  margin: 0 3px;
208
+  padding: 0 5px;
209
+  background: #eee;
210
+  border-radius: 3px;
211
+}
212
+
213
+.markdown pre {
214
+  border-radius: 6px;
215
+  background: #f7f7f7;
216
+  padding: 20px;
217
+}
218
+
219
+.markdown pre code {
220
+  border: none;
221
+  background: #f7f7f7;
222
+  margin: 0;
223
+}
224
+
225
+.markdown strong,
226
+.markdown b {
227
+  font-weight: 600;
228
+}
229
+
230
+.markdown > table {
231
+  border-collapse: collapse;
232
+  border-spacing: 0px;
233
+  empty-cells: show;
234
+  border: 1px solid #e9e9e9;
235
+  width: 95%;
236
+  margin-bottom: 24px;
237
+}
238
+
239
+.markdown > table th {
240
+  white-space: nowrap;
241
+  color: #333;
242
+  font-weight: 600;
243
+
244
+}
245
+
246
+.markdown > table th,
247
+.markdown > table td {
248
+  border: 1px solid #e9e9e9;
249
+  padding: 8px 16px;
250
+  text-align: left;
251
+}
252
+
253
+.markdown > table th {
254
+  background: #F7F7F7;
255
+}
256
+
257
+.markdown blockquote {
258
+  font-size: 90%;
259
+  color: #999;
260
+  border-left: 4px solid #e9e9e9;
261
+  padding-left: 0.8em;
262
+  margin: 1em 0;
263
+  font-style: italic;
264
+}
265
+
266
+.markdown blockquote p {
267
+  margin: 0;
268
+}
269
+
270
+.markdown .anchor {
271
+  opacity: 0;
272
+  transition: opacity 0.3s ease;
273
+  margin-left: 8px;
274
+}
275
+
276
+.markdown .waiting {
277
+  color: #ccc;
278
+}
279
+
280
+.markdown h1:hover .anchor,
281
+.markdown h2:hover .anchor,
282
+.markdown h3:hover .anchor,
283
+.markdown h4:hover .anchor,
284
+.markdown h5:hover .anchor,
285
+.markdown h6:hover .anchor {
286
+  opacity: 1;
287
+  display: inline-block;
288
+}
289
+
290
+.markdown > br,
291
+.markdown > p > br {
292
+  clear: both;
293
+}
294
+
295
+
296
+.hljs {
297
+  display: block;
298
+  background: white;
299
+  padding: 0.5em;
300
+  color: #333333;
301
+  overflow-x: auto;
302
+}
303
+
304
+.hljs-comment,
305
+.hljs-meta {
306
+  color: #969896;
307
+}
308
+
309
+.hljs-string,
310
+.hljs-variable,
311
+.hljs-template-variable,
312
+.hljs-strong,
313
+.hljs-emphasis,
314
+.hljs-quote {
315
+  color: #df5000;
316
+}
317
+
318
+.hljs-keyword,
319
+.hljs-selector-tag,
320
+.hljs-type {
321
+  color: #a71d5d;
322
+}
323
+
324
+.hljs-literal,
325
+.hljs-symbol,
326
+.hljs-bullet,
327
+.hljs-attribute {
328
+  color: #0086b3;
329
+}
330
+
331
+.hljs-section,
332
+.hljs-name {
333
+  color: #63a35c;
334
+}
335
+
336
+.hljs-tag {
337
+  color: #333333;
338
+}
339
+
340
+.hljs-title,
341
+.hljs-attr,
342
+.hljs-selector-id,
343
+.hljs-selector-class,
344
+.hljs-selector-attr,
345
+.hljs-selector-pseudo {
346
+  color: #795da3;
347
+}
348
+
349
+.hljs-addition {
350
+  color: #55a532;
351
+  background-color: #eaffea;
352
+}
353
+
354
+.hljs-deletion {
355
+  color: #bd2c00;
356
+  background-color: #ffecec;
357
+}
358
+
359
+.hljs-link {
360
+  text-decoration: underline;
361
+}
362
+
363
+pre{
364
+  background: #fff;
365
+}
366
+
367
+
368
+
369
+
370
+

+ 544 - 0
src/assets/iconfont/demo_fontclass.html View File

1
+
2
+<!DOCTYPE html>
3
+<html>
4
+<head>
5
+    <meta charset="utf-8"/>
6
+    <title>IconFont</title>
7
+    <link rel="stylesheet" href="demo.css">
8
+    <link rel="stylesheet" href="iconfont.css">
9
+</head>
10
+<body>
11
+    <div class="main markdown">
12
+        <h1>IconFont 图标</h1>
13
+        <ul class="icon_lists clear">
14
+            
15
+                <li>
16
+                <i class="icon iconfont icon-76"></i>
17
+                    <div class="name">电话</div>
18
+                    <div class="fontclass">.icon-76</div>
19
+                </li>
20
+            
21
+                <li>
22
+                <i class="icon iconfont icon-dianhua1"></i>
23
+                    <div class="name">电话</div>
24
+                    <div class="fontclass">.icon-dianhua1</div>
25
+                </li>
26
+            
27
+                <li>
28
+                <i class="icon iconfont icon-wsmp-payuser"></i>
29
+                    <div class="name">会员</div>
30
+                    <div class="fontclass">.icon-wsmp-payuser</div>
31
+                </li>
32
+            
33
+                <li>
34
+                <i class="icon iconfont icon-jiankangshuidi"></i>
35
+                    <div class="name">健康 水滴</div>
36
+                    <div class="fontclass">.icon-jiankangshuidi</div>
37
+                </li>
38
+            
39
+                <li>
40
+                <i class="icon iconfont icon-iconbaocuo"></i>
41
+                    <div class="name">报错</div>
42
+                    <div class="fontclass">.icon-iconbaocuo</div>
43
+                </li>
44
+            
45
+                <li>
46
+                <i class="icon iconfont icon-dianhua"></i>
47
+                    <div class="name">电话</div>
48
+                    <div class="fontclass">.icon-dianhua</div>
49
+                </li>
50
+            
51
+                <li>
52
+                <i class="icon iconfont icon-morentouxiang"></i>
53
+                    <div class="name">225默认头像</div>
54
+                    <div class="fontclass">.icon-morentouxiang</div>
55
+                </li>
56
+            
57
+                <li>
58
+                <i class="icon iconfont icon-accessory"></i>
59
+                    <div class="name">accessory</div>
60
+                    <div class="fontclass">.icon-accessory</div>
61
+                </li>
62
+            
63
+                <li>
64
+                <i class="icon iconfont icon-add"></i>
65
+                    <div class="name">add</div>
66
+                    <div class="fontclass">.icon-add</div>
67
+                </li>
68
+            
69
+                <li>
70
+                <i class="icon iconfont icon-addition_fill"></i>
71
+                    <div class="name">addition_fill</div>
72
+                    <div class="fontclass">.icon-addition_fill</div>
73
+                </li>
74
+            
75
+                <li>
76
+                <i class="icon iconfont icon-addition"></i>
77
+                    <div class="name">addition</div>
78
+                    <div class="fontclass">.icon-addition</div>
79
+                </li>
80
+            
81
+                <li>
82
+                <i class="icon iconfont icon-addressbook_fill"></i>
83
+                    <div class="name">addressbook_fill</div>
84
+                    <div class="fontclass">.icon-addressbook_fill</div>
85
+                </li>
86
+            
87
+                <li>
88
+                <i class="icon iconfont icon-addressbook"></i>
89
+                    <div class="name">addressbook</div>
90
+                    <div class="fontclass">.icon-addressbook</div>
91
+                </li>
92
+            
93
+                <li>
94
+                <i class="icon iconfont icon-browse_fill"></i>
95
+                    <div class="name">browse_fill</div>
96
+                    <div class="fontclass">.icon-browse_fill</div>
97
+                </li>
98
+            
99
+                <li>
100
+                <i class="icon iconfont icon-brush"></i>
101
+                    <div class="name">brush</div>
102
+                    <div class="fontclass">.icon-brush</div>
103
+                </li>
104
+            
105
+                <li>
106
+                <i class="icon iconfont icon-brush_fill"></i>
107
+                    <div class="name">brush_fill</div>
108
+                    <div class="fontclass">.icon-brush_fill</div>
109
+                </li>
110
+            
111
+                <li>
112
+                <i class="icon iconfont icon-computer_fill"></i>
113
+                    <div class="name">computer_fill</div>
114
+                    <div class="fontclass">.icon-computer_fill</div>
115
+                </li>
116
+            
117
+                <li>
118
+                <i class="icon iconfont icon-computer"></i>
119
+                    <div class="name">computer</div>
120
+                    <div class="fontclass">.icon-computer</div>
121
+                </li>
122
+            
123
+                <li>
124
+                <i class="icon iconfont icon-coordinates_fill"></i>
125
+                    <div class="name">coordinates_fill</div>
126
+                    <div class="fontclass">.icon-coordinates_fill</div>
127
+                </li>
128
+            
129
+                <li>
130
+                <i class="icon iconfont icon-coordinates"></i>
131
+                    <div class="name">coordinates</div>
132
+                    <div class="fontclass">.icon-coordinates</div>
133
+                </li>
134
+            
135
+                <li>
136
+                <i class="icon iconfont icon-coupons_fill"></i>
137
+                    <div class="name">coupons_fill</div>
138
+                    <div class="fontclass">.icon-coupons_fill</div>
139
+                </li>
140
+            
141
+                <li>
142
+                <i class="icon iconfont icon-customerservice_fill"></i>
143
+                    <div class="name">customerservice_fill</div>
144
+                    <div class="fontclass">.icon-customerservice_fill</div>
145
+                </li>
146
+            
147
+                <li>
148
+                <i class="icon iconfont icon-customerservice"></i>
149
+                    <div class="name">customerservice</div>
150
+                    <div class="fontclass">.icon-customerservice</div>
151
+                </li>
152
+            
153
+                <li>
154
+                <i class="icon iconfont icon-document"></i>
155
+                    <div class="name">document</div>
156
+                    <div class="fontclass">.icon-document</div>
157
+                </li>
158
+            
159
+                <li>
160
+                <i class="icon iconfont icon-document_fill"></i>
161
+                    <div class="name">document_fill</div>
162
+                    <div class="fontclass">.icon-document_fill</div>
163
+                </li>
164
+            
165
+                <li>
166
+                <i class="icon iconfont icon-dynamic_fill"></i>
167
+                    <div class="name">dynamic_fill</div>
168
+                    <div class="fontclass">.icon-dynamic_fill</div>
169
+                </li>
170
+            
171
+                <li>
172
+                <i class="icon iconfont icon-editor"></i>
173
+                    <div class="name">editor</div>
174
+                    <div class="fontclass">.icon-editor</div>
175
+                </li>
176
+            
177
+                <li>
178
+                <i class="icon iconfont icon-emoji"></i>
179
+                    <div class="name">emoji</div>
180
+                    <div class="fontclass">.icon-emoji</div>
181
+                </li>
182
+            
183
+                <li>
184
+                <i class="icon iconfont icon-enter"></i>
185
+                    <div class="name">enter</div>
186
+                    <div class="fontclass">.icon-enter</div>
187
+                </li>
188
+            
189
+                <li>
190
+                <i class="icon iconfont icon-flag_fill"></i>
191
+                    <div class="name">flag_fill</div>
192
+                    <div class="fontclass">.icon-flag_fill</div>
193
+                </li>
194
+            
195
+                <li>
196
+                <i class="icon iconfont icon-flag"></i>
197
+                    <div class="name">flag</div>
198
+                    <div class="fontclass">.icon-flag</div>
199
+                </li>
200
+            
201
+                <li>
202
+                <i class="icon iconfont icon-group_fill"></i>
203
+                    <div class="name">group_fill</div>
204
+                    <div class="fontclass">.icon-group_fill</div>
205
+                </li>
206
+            
207
+                <li>
208
+                <i class="icon iconfont icon-headlines_fill"></i>
209
+                    <div class="name">headlines_fill</div>
210
+                    <div class="fontclass">.icon-headlines_fill</div>
211
+                </li>
212
+            
213
+                <li>
214
+                <i class="icon iconfont icon-homepage_fill"></i>
215
+                    <div class="name">homepage_fill</div>
216
+                    <div class="fontclass">.icon-homepage_fill</div>
217
+                </li>
218
+            
219
+                <li>
220
+                <i class="icon iconfont icon-homepage"></i>
221
+                    <div class="name">homepage</div>
222
+                    <div class="fontclass">.icon-homepage</div>
223
+                </li>
224
+            
225
+                <li>
226
+                <i class="icon iconfont icon-interactive_fill"></i>
227
+                    <div class="name">interactive_fill</div>
228
+                    <div class="fontclass">.icon-interactive_fill</div>
229
+                </li>
230
+            
231
+                <li>
232
+                <i class="icon iconfont icon-interactive"></i>
233
+                    <div class="name">interactive</div>
234
+                    <div class="fontclass">.icon-interactive</div>
235
+                </li>
236
+            
237
+                <li>
238
+                <i class="icon iconfont icon-label"></i>
239
+                    <div class="name">label</div>
240
+                    <div class="fontclass">.icon-label</div>
241
+                </li>
242
+            
243
+                <li>
244
+                <i class="icon iconfont icon-like_fill"></i>
245
+                    <div class="name">like_fill</div>
246
+                    <div class="fontclass">.icon-like_fill</div>
247
+                </li>
248
+            
249
+                <li>
250
+                <i class="icon iconfont icon-like"></i>
251
+                    <div class="name">like</div>
252
+                    <div class="fontclass">.icon-like</div>
253
+                </li>
254
+            
255
+                <li>
256
+                <i class="icon iconfont icon-lock"></i>
257
+                    <div class="name">lock</div>
258
+                    <div class="fontclass">.icon-lock</div>
259
+                </li>
260
+            
261
+                <li>
262
+                <i class="icon iconfont icon-mail"></i>
263
+                    <div class="name">mail</div>
264
+                    <div class="fontclass">.icon-mail</div>
265
+                </li>
266
+            
267
+                <li>
268
+                <i class="icon iconfont icon-manage"></i>
269
+                    <div class="name">manage</div>
270
+                    <div class="fontclass">.icon-manage</div>
271
+                </li>
272
+            
273
+                <li>
274
+                <i class="icon iconfont icon-message"></i>
275
+                    <div class="name">message</div>
276
+                    <div class="fontclass">.icon-message</div>
277
+                </li>
278
+            
279
+                <li>
280
+                <i class="icon iconfont icon-mine_fill"></i>
281
+                    <div class="name">mine_fill</div>
282
+                    <div class="fontclass">.icon-mine_fill</div>
283
+                </li>
284
+            
285
+                <li>
286
+                <i class="icon iconfont icon-mobilephone_fill"></i>
287
+                    <div class="name">mobilephone_fill</div>
288
+                    <div class="fontclass">.icon-mobilephone_fill</div>
289
+                </li>
290
+            
291
+                <li>
292
+                <i class="icon iconfont icon-mobilephone"></i>
293
+                    <div class="name">mobilephone</div>
294
+                    <div class="fontclass">.icon-mobilephone</div>
295
+                </li>
296
+            
297
+                <li>
298
+                <i class="icon iconfont icon-offline_fill"></i>
299
+                    <div class="name">offline_fill</div>
300
+                    <div class="fontclass">.icon-offline_fill</div>
301
+                </li>
302
+            
303
+                <li>
304
+                <i class="icon iconfont icon-offline"></i>
305
+                    <div class="name">offline</div>
306
+                    <div class="fontclass">.icon-offline</div>
307
+                </li>
308
+            
309
+                <li>
310
+                <i class="icon iconfont icon-order_fill"></i>
311
+                    <div class="name">order_fill</div>
312
+                    <div class="fontclass">.icon-order_fill</div>
313
+                </li>
314
+            
315
+                <li>
316
+                <i class="icon iconfont icon-other"></i>
317
+                    <div class="name">other</div>
318
+                    <div class="fontclass">.icon-other</div>
319
+                </li>
320
+            
321
+                <li>
322
+                <i class="icon iconfont icon-picture_fill"></i>
323
+                    <div class="name">picture_fill</div>
324
+                    <div class="fontclass">.icon-picture_fill</div>
325
+                </li>
326
+            
327
+                <li>
328
+                <i class="icon iconfont icon-prompt_fill"></i>
329
+                    <div class="name">prompt_fill</div>
330
+                    <div class="fontclass">.icon-prompt_fill</div>
331
+                </li>
332
+            
333
+                <li>
334
+                <i class="icon iconfont icon-qrcode_fill"></i>
335
+                    <div class="name">qrcode_fill</div>
336
+                    <div class="fontclass">.icon-qrcode_fill</div>
337
+                </li>
338
+            
339
+                <li>
340
+                <i class="icon iconfont icon-remind_fill"></i>
341
+                    <div class="name">remind_fill</div>
342
+                    <div class="fontclass">.icon-remind_fill</div>
343
+                </li>
344
+            
345
+                <li>
346
+                <i class="icon iconfont icon-remind"></i>
347
+                    <div class="name">remind</div>
348
+                    <div class="fontclass">.icon-remind</div>
349
+                </li>
350
+            
351
+                <li>
352
+                <i class="icon iconfont icon-return"></i>
353
+                    <div class="name">return</div>
354
+                    <div class="fontclass">.icon-return</div>
355
+                </li>
356
+            
357
+                <li>
358
+                <i class="icon iconfont icon-service_fill"></i>
359
+                    <div class="name">service_fill</div>
360
+                    <div class="fontclass">.icon-service_fill</div>
361
+                </li>
362
+            
363
+                <li>
364
+                <i class="icon iconfont icon-service"></i>
365
+                    <div class="name">service</div>
366
+                    <div class="fontclass">.icon-service</div>
367
+                </li>
368
+            
369
+                <li>
370
+                <i class="icon iconfont icon-setup_fill"></i>
371
+                    <div class="name">setup_fill</div>
372
+                    <div class="fontclass">.icon-setup_fill</div>
373
+                </li>
374
+            
375
+                <li>
376
+                <i class="icon iconfont icon-setup"></i>
377
+                    <div class="name">setup</div>
378
+                    <div class="fontclass">.icon-setup</div>
379
+                </li>
380
+            
381
+                <li>
382
+                <i class="icon iconfont icon-smallscreen"></i>
383
+                    <div class="name">smallscreen</div>
384
+                    <div class="fontclass">.icon-smallscreen</div>
385
+                </li>
386
+            
387
+                <li>
388
+                <i class="icon iconfont icon-success_fill"></i>
389
+                    <div class="name">success_fill</div>
390
+                    <div class="fontclass">.icon-success_fill</div>
391
+                </li>
392
+            
393
+                <li>
394
+                <i class="icon iconfont icon-success"></i>
395
+                    <div class="name">success</div>
396
+                    <div class="fontclass">.icon-success</div>
397
+                </li>
398
+            
399
+                <li>
400
+                <i class="icon iconfont icon-time_fill"></i>
401
+                    <div class="name">time_fill</div>
402
+                    <div class="fontclass">.icon-time_fill</div>
403
+                </li>
404
+            
405
+                <li>
406
+                <i class="icon iconfont icon-trash"></i>
407
+                    <div class="name">trash</div>
408
+                    <div class="fontclass">.icon-trash</div>
409
+                </li>
410
+            
411
+                <li>
412
+                <i class="icon iconfont icon-trash_fill"></i>
413
+                    <div class="name">trash_fill</div>
414
+                    <div class="fontclass">.icon-trash_fill</div>
415
+                </li>
416
+            
417
+                <li>
418
+                <i class="icon iconfont icon-undo"></i>
419
+                    <div class="name">undo</div>
420
+                    <div class="fontclass">.icon-undo</div>
421
+                </li>
422
+            
423
+                <li>
424
+                <i class="icon iconfont icon-workbench_fill"></i>
425
+                    <div class="name">workbench_fill</div>
426
+                    <div class="fontclass">.icon-workbench_fill</div>
427
+                </li>
428
+            
429
+                <li>
430
+                <i class="icon iconfont icon-daoru"></i>
431
+                    <div class="name">导入</div>
432
+                    <div class="fontclass">.icon-daoru</div>
433
+                </li>
434
+            
435
+                <li>
436
+                <i class="icon iconfont icon-search"></i>
437
+                    <div class="name">search</div>
438
+                    <div class="fontclass">.icon-search</div>
439
+                </li>
440
+            
441
+                <li>
442
+                <i class="icon iconfont icon-dianhua2"></i>
443
+                    <div class="name">电话</div>
444
+                    <div class="fontclass">.icon-dianhua2</div>
445
+                </li>
446
+            
447
+                <li>
448
+                <i class="icon iconfont icon-packup"></i>
449
+                    <div class="name">packup</div>
450
+                    <div class="fontclass">.icon-packup</div>
451
+                </li>
452
+            
453
+                <li>
454
+                <i class="icon iconfont icon-unfold"></i>
455
+                    <div class="name">unfold</div>
456
+                    <div class="fontclass">.icon-unfold</div>
457
+                </li>
458
+            
459
+                <li>
460
+                <i class="icon iconfont icon-wangwang"></i>
461
+                    <div class="name">wangwang_fill</div>
462
+                    <div class="fontclass">.icon-wangwang</div>
463
+                </li>
464
+            
465
+                <li>
466
+                <i class="icon iconfont icon-yanzhengma"></i>
467
+                    <div class="name">验证码</div>
468
+                    <div class="fontclass">.icon-yanzhengma</div>
469
+                </li>
470
+            
471
+                <li>
472
+                <i class="icon iconfont icon-baocuo-chahua"></i>
473
+                    <div class="name">报错-插画</div>
474
+                    <div class="fontclass">.icon-baocuo-chahua</div>
475
+                </li>
476
+            
477
+                <li>
478
+                <i class="icon iconfont icon-pengyou"></i>
479
+                    <div class="name">朋友</div>
480
+                    <div class="fontclass">.icon-pengyou</div>
481
+                </li>
482
+            
483
+                <li>
484
+                <i class="icon iconfont icon-suoyou"></i>
485
+                    <div class="name">所有</div>
486
+                    <div class="fontclass">.icon-suoyou</div>
487
+                </li>
488
+            
489
+                <li>
490
+                <i class="icon iconfont icon-huiyuan"></i>
491
+                    <div class="name">会员</div>
492
+                    <div class="fontclass">.icon-huiyuan</div>
493
+                </li>
494
+            
495
+                <li>
496
+                <i class="icon iconfont icon-huiyuan1"></i>
497
+                    <div class="name">会员</div>
498
+                    <div class="fontclass">.icon-huiyuan1</div>
499
+                </li>
500
+            
501
+                <li>
502
+                <i class="icon iconfont icon-kongyemian"></i>
503
+                    <div class="name">空页面</div>
504
+                    <div class="fontclass">.icon-kongyemian</div>
505
+                </li>
506
+            
507
+                <li>
508
+                <i class="icon iconfont icon-logout"></i>
509
+                    <div class="name">logout</div>
510
+                    <div class="fontclass">.icon-logout</div>
511
+                </li>
512
+            
513
+                <li>
514
+                <i class="icon iconfont icon-cloudupload-o"></i>
515
+                    <div class="name">cloud upload-o</div>
516
+                    <div class="fontclass">.icon-cloudupload-o</div>
517
+                </li>
518
+            
519
+        </ul>
520
+
521
+        <h2 id="font-class-">font-class引用</h2>
522
+        <hr>
523
+
524
+        <p>font-class是unicode使用方式的一种变种,主要是解决unicode书写不直观,语意不明确的问题。</p>
525
+        <p>与unicode使用方式相比,具有如下特点:</p>
526
+        <ul>
527
+        <li>兼容性良好,支持ie8+,及所有现代浏览器。</li>
528
+        <li>相比于unicode语意明确,书写更直观。可以很容易分辨这个icon是什么。</li>
529
+        <li>因为使用class来定义图标,所以当要替换图标时,只需要修改class里面的unicode引用。</li>
530
+        <li>不过因为本质上还是使用的字体,所以多色图标还是不支持的。</li>
531
+        </ul>
532
+        <p>使用步骤如下:</p>
533
+        <h3 id="-fontclass-">第一步:引入项目下面生成的fontclass代码:</h3>
534
+
535
+
536
+        <pre><code class="lang-js hljs javascript"><span class="hljs-comment">&lt;link rel="stylesheet" type="text/css" href="./iconfont.css"&gt;</span></code></pre>
537
+        <h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
538
+        <pre><code class="lang-css hljs">&lt;<span class="hljs-selector-tag">i</span> <span class="hljs-selector-tag">class</span>="<span class="hljs-selector-tag">iconfont</span> <span class="hljs-selector-tag">icon-xxx</span>"&gt;&lt;/<span class="hljs-selector-tag">i</span>&gt;</code></pre>
539
+        <blockquote>
540
+        <p>"iconfont"是你项目下的font-family。可以通过编辑项目查看,默认是"iconfont"。</p>
541
+        </blockquote>
542
+    </div>
543
+</body>
544
+</html>

+ 743 - 0
src/assets/iconfont/demo_symbol.html View File

1
+
2
+<!DOCTYPE html>
3
+<html>
4
+<head>
5
+    <meta charset="utf-8"/>
6
+    <title>IconFont</title>
7
+    <link rel="stylesheet" href="demo.css">
8
+    <script src="iconfont.js"></script>
9
+
10
+    <style type="text/css">
11
+        .icon {
12
+          /* 通过设置 font-size 来改变图标大小 */
13
+          width: 1em; height: 1em;
14
+          /* 图标和文字相邻时,垂直对齐 */
15
+          vertical-align: -0.15em;
16
+          /* 通过设置 color 来改变 SVG 的颜色/fill */
17
+          fill: currentColor;
18
+          /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
19
+             normalize.css 中也包含这行 */
20
+          overflow: hidden;
21
+        }
22
+
23
+    </style>
24
+</head>
25
+<body>
26
+    <div class="main markdown">
27
+        <h1>IconFont 图标</h1>
28
+        <ul class="icon_lists clear">
29
+            
30
+                <li>
31
+                    <svg class="icon" aria-hidden="true">
32
+                        <use xlink:href="#icon-76"></use>
33
+                    </svg>
34
+                    <div class="name">电话</div>
35
+                    <div class="fontclass">#icon-76</div>
36
+                </li>
37
+            
38
+                <li>
39
+                    <svg class="icon" aria-hidden="true">
40
+                        <use xlink:href="#icon-dianhua1"></use>
41
+                    </svg>
42
+                    <div class="name">电话</div>
43
+                    <div class="fontclass">#icon-dianhua1</div>
44
+                </li>
45
+            
46
+                <li>
47
+                    <svg class="icon" aria-hidden="true">
48
+                        <use xlink:href="#icon-wsmp-payuser"></use>
49
+                    </svg>
50
+                    <div class="name">会员</div>
51
+                    <div class="fontclass">#icon-wsmp-payuser</div>
52
+                </li>
53
+            
54
+                <li>
55
+                    <svg class="icon" aria-hidden="true">
56
+                        <use xlink:href="#icon-jiankangshuidi"></use>
57
+                    </svg>
58
+                    <div class="name">健康 水滴</div>
59
+                    <div class="fontclass">#icon-jiankangshuidi</div>
60
+                </li>
61
+            
62
+                <li>
63
+                    <svg class="icon" aria-hidden="true">
64
+                        <use xlink:href="#icon-iconbaocuo"></use>
65
+                    </svg>
66
+                    <div class="name">报错</div>
67
+                    <div class="fontclass">#icon-iconbaocuo</div>
68
+                </li>
69
+            
70
+                <li>
71
+                    <svg class="icon" aria-hidden="true">
72
+                        <use xlink:href="#icon-dianhua"></use>
73
+                    </svg>
74
+                    <div class="name">电话</div>
75
+                    <div class="fontclass">#icon-dianhua</div>
76
+                </li>
77
+            
78
+                <li>
79
+                    <svg class="icon" aria-hidden="true">
80
+                        <use xlink:href="#icon-morentouxiang"></use>
81
+                    </svg>
82
+                    <div class="name">225默认头像</div>
83
+                    <div class="fontclass">#icon-morentouxiang</div>
84
+                </li>
85
+            
86
+                <li>
87
+                    <svg class="icon" aria-hidden="true">
88
+                        <use xlink:href="#icon-accessory"></use>
89
+                    </svg>
90
+                    <div class="name">accessory</div>
91
+                    <div class="fontclass">#icon-accessory</div>
92
+                </li>
93
+            
94
+                <li>
95
+                    <svg class="icon" aria-hidden="true">
96
+                        <use xlink:href="#icon-add"></use>
97
+                    </svg>
98
+                    <div class="name">add</div>
99
+                    <div class="fontclass">#icon-add</div>
100
+                </li>
101
+            
102
+                <li>
103
+                    <svg class="icon" aria-hidden="true">
104
+                        <use xlink:href="#icon-addition_fill"></use>
105
+                    </svg>
106
+                    <div class="name">addition_fill</div>
107
+                    <div class="fontclass">#icon-addition_fill</div>
108
+                </li>
109
+            
110
+                <li>
111
+                    <svg class="icon" aria-hidden="true">
112
+                        <use xlink:href="#icon-addition"></use>
113
+                    </svg>
114
+                    <div class="name">addition</div>
115
+                    <div class="fontclass">#icon-addition</div>
116
+                </li>
117
+            
118
+                <li>
119
+                    <svg class="icon" aria-hidden="true">
120
+                        <use xlink:href="#icon-addressbook_fill"></use>
121
+                    </svg>
122
+                    <div class="name">addressbook_fill</div>
123
+                    <div class="fontclass">#icon-addressbook_fill</div>
124
+                </li>
125
+            
126
+                <li>
127
+                    <svg class="icon" aria-hidden="true">
128
+                        <use xlink:href="#icon-addressbook"></use>
129
+                    </svg>
130
+                    <div class="name">addressbook</div>
131
+                    <div class="fontclass">#icon-addressbook</div>
132
+                </li>
133
+            
134
+                <li>
135
+                    <svg class="icon" aria-hidden="true">
136
+                        <use xlink:href="#icon-browse_fill"></use>
137
+                    </svg>
138
+                    <div class="name">browse_fill</div>
139
+                    <div class="fontclass">#icon-browse_fill</div>
140
+                </li>
141
+            
142
+                <li>
143
+                    <svg class="icon" aria-hidden="true">
144
+                        <use xlink:href="#icon-brush"></use>
145
+                    </svg>
146
+                    <div class="name">brush</div>
147
+                    <div class="fontclass">#icon-brush</div>
148
+                </li>
149
+            
150
+                <li>
151
+                    <svg class="icon" aria-hidden="true">
152
+                        <use xlink:href="#icon-brush_fill"></use>
153
+                    </svg>
154
+                    <div class="name">brush_fill</div>
155
+                    <div class="fontclass">#icon-brush_fill</div>
156
+                </li>
157
+            
158
+                <li>
159
+                    <svg class="icon" aria-hidden="true">
160
+                        <use xlink:href="#icon-computer_fill"></use>
161
+                    </svg>
162
+                    <div class="name">computer_fill</div>
163
+                    <div class="fontclass">#icon-computer_fill</div>
164
+                </li>
165
+            
166
+                <li>
167
+                    <svg class="icon" aria-hidden="true">
168
+                        <use xlink:href="#icon-computer"></use>
169
+                    </svg>
170
+                    <div class="name">computer</div>
171
+                    <div class="fontclass">#icon-computer</div>
172
+                </li>
173
+            
174
+                <li>
175
+                    <svg class="icon" aria-hidden="true">
176
+                        <use xlink:href="#icon-coordinates_fill"></use>
177
+                    </svg>
178
+                    <div class="name">coordinates_fill</div>
179
+                    <div class="fontclass">#icon-coordinates_fill</div>
180
+                </li>
181
+            
182
+                <li>
183
+                    <svg class="icon" aria-hidden="true">
184
+                        <use xlink:href="#icon-coordinates"></use>
185
+                    </svg>
186
+                    <div class="name">coordinates</div>
187
+                    <div class="fontclass">#icon-coordinates</div>
188
+                </li>
189
+            
190
+                <li>
191
+                    <svg class="icon" aria-hidden="true">
192
+                        <use xlink:href="#icon-coupons_fill"></use>
193
+                    </svg>
194
+                    <div class="name">coupons_fill</div>
195
+                    <div class="fontclass">#icon-coupons_fill</div>
196
+                </li>
197
+            
198
+                <li>
199
+                    <svg class="icon" aria-hidden="true">
200
+                        <use xlink:href="#icon-customerservice_fill"></use>
201
+                    </svg>
202
+                    <div class="name">customerservice_fill</div>
203
+                    <div class="fontclass">#icon-customerservice_fill</div>
204
+                </li>
205
+            
206
+                <li>
207
+                    <svg class="icon" aria-hidden="true">
208
+                        <use xlink:href="#icon-customerservice"></use>
209
+                    </svg>
210
+                    <div class="name">customerservice</div>
211
+                    <div class="fontclass">#icon-customerservice</div>
212
+                </li>
213
+            
214
+                <li>
215
+                    <svg class="icon" aria-hidden="true">
216
+                        <use xlink:href="#icon-document"></use>
217
+                    </svg>
218
+                    <div class="name">document</div>
219
+                    <div class="fontclass">#icon-document</div>
220
+                </li>
221
+            
222
+                <li>
223
+                    <svg class="icon" aria-hidden="true">
224
+                        <use xlink:href="#icon-document_fill"></use>
225
+                    </svg>
226
+                    <div class="name">document_fill</div>
227
+                    <div class="fontclass">#icon-document_fill</div>
228
+                </li>
229
+            
230
+                <li>
231
+                    <svg class="icon" aria-hidden="true">
232
+                        <use xlink:href="#icon-dynamic_fill"></use>
233
+                    </svg>
234
+                    <div class="name">dynamic_fill</div>
235
+                    <div class="fontclass">#icon-dynamic_fill</div>
236
+                </li>
237
+            
238
+                <li>
239
+                    <svg class="icon" aria-hidden="true">
240
+                        <use xlink:href="#icon-editor"></use>
241
+                    </svg>
242
+                    <div class="name">editor</div>
243
+                    <div class="fontclass">#icon-editor</div>
244
+                </li>
245
+            
246
+                <li>
247
+                    <svg class="icon" aria-hidden="true">
248
+                        <use xlink:href="#icon-emoji"></use>
249
+                    </svg>
250
+                    <div class="name">emoji</div>
251
+                    <div class="fontclass">#icon-emoji</div>
252
+                </li>
253
+            
254
+                <li>
255
+                    <svg class="icon" aria-hidden="true">
256
+                        <use xlink:href="#icon-enter"></use>
257
+                    </svg>
258
+                    <div class="name">enter</div>
259
+                    <div class="fontclass">#icon-enter</div>
260
+                </li>
261
+            
262
+                <li>
263
+                    <svg class="icon" aria-hidden="true">
264
+                        <use xlink:href="#icon-flag_fill"></use>
265
+                    </svg>
266
+                    <div class="name">flag_fill</div>
267
+                    <div class="fontclass">#icon-flag_fill</div>
268
+                </li>
269
+            
270
+                <li>
271
+                    <svg class="icon" aria-hidden="true">
272
+                        <use xlink:href="#icon-flag"></use>
273
+                    </svg>
274
+                    <div class="name">flag</div>
275
+                    <div class="fontclass">#icon-flag</div>
276
+                </li>
277
+            
278
+                <li>
279
+                    <svg class="icon" aria-hidden="true">
280
+                        <use xlink:href="#icon-group_fill"></use>
281
+                    </svg>
282
+                    <div class="name">group_fill</div>
283
+                    <div class="fontclass">#icon-group_fill</div>
284
+                </li>
285
+            
286
+                <li>
287
+                    <svg class="icon" aria-hidden="true">
288
+                        <use xlink:href="#icon-headlines_fill"></use>
289
+                    </svg>
290
+                    <div class="name">headlines_fill</div>
291
+                    <div class="fontclass">#icon-headlines_fill</div>
292
+                </li>
293
+            
294
+                <li>
295
+                    <svg class="icon" aria-hidden="true">
296
+                        <use xlink:href="#icon-homepage_fill"></use>
297
+                    </svg>
298
+                    <div class="name">homepage_fill</div>
299
+                    <div class="fontclass">#icon-homepage_fill</div>
300
+                </li>
301
+            
302
+                <li>
303
+                    <svg class="icon" aria-hidden="true">
304
+                        <use xlink:href="#icon-homepage"></use>
305
+                    </svg>
306
+                    <div class="name">homepage</div>
307
+                    <div class="fontclass">#icon-homepage</div>
308
+                </li>
309
+            
310
+                <li>
311
+                    <svg class="icon" aria-hidden="true">
312
+                        <use xlink:href="#icon-interactive_fill"></use>
313
+                    </svg>
314
+                    <div class="name">interactive_fill</div>
315
+                    <div class="fontclass">#icon-interactive_fill</div>
316
+                </li>
317
+            
318
+                <li>
319
+                    <svg class="icon" aria-hidden="true">
320
+                        <use xlink:href="#icon-interactive"></use>
321
+                    </svg>
322
+                    <div class="name">interactive</div>
323
+                    <div class="fontclass">#icon-interactive</div>
324
+                </li>
325
+            
326
+                <li>
327
+                    <svg class="icon" aria-hidden="true">
328
+                        <use xlink:href="#icon-label"></use>
329
+                    </svg>
330
+                    <div class="name">label</div>
331
+                    <div class="fontclass">#icon-label</div>
332
+                </li>
333
+            
334
+                <li>
335
+                    <svg class="icon" aria-hidden="true">
336
+                        <use xlink:href="#icon-like_fill"></use>
337
+                    </svg>
338
+                    <div class="name">like_fill</div>
339
+                    <div class="fontclass">#icon-like_fill</div>
340
+                </li>
341
+            
342
+                <li>
343
+                    <svg class="icon" aria-hidden="true">
344
+                        <use xlink:href="#icon-like"></use>
345
+                    </svg>
346
+                    <div class="name">like</div>
347
+                    <div class="fontclass">#icon-like</div>
348
+                </li>
349
+            
350
+                <li>
351
+                    <svg class="icon" aria-hidden="true">
352
+                        <use xlink:href="#icon-lock"></use>
353
+                    </svg>
354
+                    <div class="name">lock</div>
355
+                    <div class="fontclass">#icon-lock</div>
356
+                </li>
357
+            
358
+                <li>
359
+                    <svg class="icon" aria-hidden="true">
360
+                        <use xlink:href="#icon-mail"></use>
361
+                    </svg>
362
+                    <div class="name">mail</div>
363
+                    <div class="fontclass">#icon-mail</div>
364
+                </li>
365
+            
366
+                <li>
367
+                    <svg class="icon" aria-hidden="true">
368
+                        <use xlink:href="#icon-manage"></use>
369
+                    </svg>
370
+                    <div class="name">manage</div>
371
+                    <div class="fontclass">#icon-manage</div>
372
+                </li>
373
+            
374
+                <li>
375
+                    <svg class="icon" aria-hidden="true">
376
+                        <use xlink:href="#icon-message"></use>
377
+                    </svg>
378
+                    <div class="name">message</div>
379
+                    <div class="fontclass">#icon-message</div>
380
+                </li>
381
+            
382
+                <li>
383
+                    <svg class="icon" aria-hidden="true">
384
+                        <use xlink:href="#icon-mine_fill"></use>
385
+                    </svg>
386
+                    <div class="name">mine_fill</div>
387
+                    <div class="fontclass">#icon-mine_fill</div>
388
+                </li>
389
+            
390
+                <li>
391
+                    <svg class="icon" aria-hidden="true">
392
+                        <use xlink:href="#icon-mobilephone_fill"></use>
393
+                    </svg>
394
+                    <div class="name">mobilephone_fill</div>
395
+                    <div class="fontclass">#icon-mobilephone_fill</div>
396
+                </li>
397
+            
398
+                <li>
399
+                    <svg class="icon" aria-hidden="true">
400
+                        <use xlink:href="#icon-mobilephone"></use>
401
+                    </svg>
402
+                    <div class="name">mobilephone</div>
403
+                    <div class="fontclass">#icon-mobilephone</div>
404
+                </li>
405
+            
406
+                <li>
407
+                    <svg class="icon" aria-hidden="true">
408
+                        <use xlink:href="#icon-offline_fill"></use>
409
+                    </svg>
410
+                    <div class="name">offline_fill</div>
411
+                    <div class="fontclass">#icon-offline_fill</div>
412
+                </li>
413
+            
414
+                <li>
415
+                    <svg class="icon" aria-hidden="true">
416
+                        <use xlink:href="#icon-offline"></use>
417
+                    </svg>
418
+                    <div class="name">offline</div>
419
+                    <div class="fontclass">#icon-offline</div>
420
+                </li>
421
+            
422
+                <li>
423
+                    <svg class="icon" aria-hidden="true">
424
+                        <use xlink:href="#icon-order_fill"></use>
425
+                    </svg>
426
+                    <div class="name">order_fill</div>
427
+                    <div class="fontclass">#icon-order_fill</div>
428
+                </li>
429
+            
430
+                <li>
431
+                    <svg class="icon" aria-hidden="true">
432
+                        <use xlink:href="#icon-other"></use>
433
+                    </svg>
434
+                    <div class="name">other</div>
435
+                    <div class="fontclass">#icon-other</div>
436
+                </li>
437
+            
438
+                <li>
439
+                    <svg class="icon" aria-hidden="true">
440
+                        <use xlink:href="#icon-picture_fill"></use>
441
+                    </svg>
442
+                    <div class="name">picture_fill</div>
443
+                    <div class="fontclass">#icon-picture_fill</div>
444
+                </li>
445
+            
446
+                <li>
447
+                    <svg class="icon" aria-hidden="true">
448
+                        <use xlink:href="#icon-prompt_fill"></use>
449
+                    </svg>
450
+                    <div class="name">prompt_fill</div>
451
+                    <div class="fontclass">#icon-prompt_fill</div>
452
+                </li>
453
+            
454
+                <li>
455
+                    <svg class="icon" aria-hidden="true">
456
+                        <use xlink:href="#icon-qrcode_fill"></use>
457
+                    </svg>
458
+                    <div class="name">qrcode_fill</div>
459
+                    <div class="fontclass">#icon-qrcode_fill</div>
460
+                </li>
461
+            
462
+                <li>
463
+                    <svg class="icon" aria-hidden="true">
464
+                        <use xlink:href="#icon-remind_fill"></use>
465
+                    </svg>
466
+                    <div class="name">remind_fill</div>
467
+                    <div class="fontclass">#icon-remind_fill</div>
468
+                </li>
469
+            
470
+                <li>
471
+                    <svg class="icon" aria-hidden="true">
472
+                        <use xlink:href="#icon-remind"></use>
473
+                    </svg>
474
+                    <div class="name">remind</div>
475
+                    <div class="fontclass">#icon-remind</div>
476
+                </li>
477
+            
478
+                <li>
479
+                    <svg class="icon" aria-hidden="true">
480
+                        <use xlink:href="#icon-return"></use>
481
+                    </svg>
482
+                    <div class="name">return</div>
483
+                    <div class="fontclass">#icon-return</div>
484
+                </li>
485
+            
486
+                <li>
487
+                    <svg class="icon" aria-hidden="true">
488
+                        <use xlink:href="#icon-service_fill"></use>
489
+                    </svg>
490
+                    <div class="name">service_fill</div>
491
+                    <div class="fontclass">#icon-service_fill</div>
492
+                </li>
493
+            
494
+                <li>
495
+                    <svg class="icon" aria-hidden="true">
496
+                        <use xlink:href="#icon-service"></use>
497
+                    </svg>
498
+                    <div class="name">service</div>
499
+                    <div class="fontclass">#icon-service</div>
500
+                </li>
501
+            
502
+                <li>
503
+                    <svg class="icon" aria-hidden="true">
504
+                        <use xlink:href="#icon-setup_fill"></use>
505
+                    </svg>
506
+                    <div class="name">setup_fill</div>
507
+                    <div class="fontclass">#icon-setup_fill</div>
508
+                </li>
509
+            
510
+                <li>
511
+                    <svg class="icon" aria-hidden="true">
512
+                        <use xlink:href="#icon-setup"></use>
513
+                    </svg>
514
+                    <div class="name">setup</div>
515
+                    <div class="fontclass">#icon-setup</div>
516
+                </li>
517
+            
518
+                <li>
519
+                    <svg class="icon" aria-hidden="true">
520
+                        <use xlink:href="#icon-smallscreen"></use>
521
+                    </svg>
522
+                    <div class="name">smallscreen</div>
523
+                    <div class="fontclass">#icon-smallscreen</div>
524
+                </li>
525
+            
526
+                <li>
527
+                    <svg class="icon" aria-hidden="true">
528
+                        <use xlink:href="#icon-success_fill"></use>
529
+                    </svg>
530
+                    <div class="name">success_fill</div>
531
+                    <div class="fontclass">#icon-success_fill</div>
532
+                </li>
533
+            
534
+                <li>
535
+                    <svg class="icon" aria-hidden="true">
536
+                        <use xlink:href="#icon-success"></use>
537
+                    </svg>
538
+                    <div class="name">success</div>
539
+                    <div class="fontclass">#icon-success</div>
540
+                </li>
541
+            
542
+                <li>
543
+                    <svg class="icon" aria-hidden="true">
544
+                        <use xlink:href="#icon-time_fill"></use>
545
+                    </svg>
546
+                    <div class="name">time_fill</div>
547
+                    <div class="fontclass">#icon-time_fill</div>
548
+                </li>
549
+            
550
+                <li>
551
+                    <svg class="icon" aria-hidden="true">
552
+                        <use xlink:href="#icon-trash"></use>
553
+                    </svg>
554
+                    <div class="name">trash</div>
555
+                    <div class="fontclass">#icon-trash</div>
556
+                </li>
557
+            
558
+                <li>
559
+                    <svg class="icon" aria-hidden="true">
560
+                        <use xlink:href="#icon-trash_fill"></use>
561
+                    </svg>
562
+                    <div class="name">trash_fill</div>
563
+                    <div class="fontclass">#icon-trash_fill</div>
564
+                </li>
565
+            
566
+                <li>
567
+                    <svg class="icon" aria-hidden="true">
568
+                        <use xlink:href="#icon-undo"></use>
569
+                    </svg>
570
+                    <div class="name">undo</div>
571
+                    <div class="fontclass">#icon-undo</div>
572
+                </li>
573
+            
574
+                <li>
575
+                    <svg class="icon" aria-hidden="true">
576
+                        <use xlink:href="#icon-workbench_fill"></use>
577
+                    </svg>
578
+                    <div class="name">workbench_fill</div>
579
+                    <div class="fontclass">#icon-workbench_fill</div>
580
+                </li>
581
+            
582
+                <li>
583
+                    <svg class="icon" aria-hidden="true">
584
+                        <use xlink:href="#icon-daoru"></use>
585
+                    </svg>
586
+                    <div class="name">导入</div>
587
+                    <div class="fontclass">#icon-daoru</div>
588
+                </li>
589
+            
590
+                <li>
591
+                    <svg class="icon" aria-hidden="true">
592
+                        <use xlink:href="#icon-search"></use>
593
+                    </svg>
594
+                    <div class="name">search</div>
595
+                    <div class="fontclass">#icon-search</div>
596
+                </li>
597
+            
598
+                <li>
599
+                    <svg class="icon" aria-hidden="true">
600
+                        <use xlink:href="#icon-dianhua2"></use>
601
+                    </svg>
602
+                    <div class="name">电话</div>
603
+                    <div class="fontclass">#icon-dianhua2</div>
604
+                </li>
605
+            
606
+                <li>
607
+                    <svg class="icon" aria-hidden="true">
608
+                        <use xlink:href="#icon-packup"></use>
609
+                    </svg>
610
+                    <div class="name">packup</div>
611
+                    <div class="fontclass">#icon-packup</div>
612
+                </li>
613
+            
614
+                <li>
615
+                    <svg class="icon" aria-hidden="true">
616
+                        <use xlink:href="#icon-unfold"></use>
617
+                    </svg>
618
+                    <div class="name">unfold</div>
619
+                    <div class="fontclass">#icon-unfold</div>
620
+                </li>
621
+            
622
+                <li>
623
+                    <svg class="icon" aria-hidden="true">
624
+                        <use xlink:href="#icon-wangwang"></use>
625
+                    </svg>
626
+                    <div class="name">wangwang_fill</div>
627
+                    <div class="fontclass">#icon-wangwang</div>
628
+                </li>
629
+            
630
+                <li>
631
+                    <svg class="icon" aria-hidden="true">
632
+                        <use xlink:href="#icon-yanzhengma"></use>
633
+                    </svg>
634
+                    <div class="name">验证码</div>
635
+                    <div class="fontclass">#icon-yanzhengma</div>
636
+                </li>
637
+            
638
+                <li>
639
+                    <svg class="icon" aria-hidden="true">
640
+                        <use xlink:href="#icon-baocuo-chahua"></use>
641
+                    </svg>
642
+                    <div class="name">报错-插画</div>
643
+                    <div class="fontclass">#icon-baocuo-chahua</div>
644
+                </li>
645
+            
646
+                <li>
647
+                    <svg class="icon" aria-hidden="true">
648
+                        <use xlink:href="#icon-pengyou"></use>
649
+                    </svg>
650
+                    <div class="name">朋友</div>
651
+                    <div class="fontclass">#icon-pengyou</div>
652
+                </li>
653
+            
654
+                <li>
655
+                    <svg class="icon" aria-hidden="true">
656
+                        <use xlink:href="#icon-suoyou"></use>
657
+                    </svg>
658
+                    <div class="name">所有</div>
659
+                    <div class="fontclass">#icon-suoyou</div>
660
+                </li>
661
+            
662
+                <li>
663
+                    <svg class="icon" aria-hidden="true">
664
+                        <use xlink:href="#icon-huiyuan"></use>
665
+                    </svg>
666
+                    <div class="name">会员</div>
667
+                    <div class="fontclass">#icon-huiyuan</div>
668
+                </li>
669
+            
670
+                <li>
671
+                    <svg class="icon" aria-hidden="true">
672
+                        <use xlink:href="#icon-huiyuan1"></use>
673
+                    </svg>
674
+                    <div class="name">会员</div>
675
+                    <div class="fontclass">#icon-huiyuan1</div>
676
+                </li>
677
+            
678
+                <li>
679
+                    <svg class="icon" aria-hidden="true">
680
+                        <use xlink:href="#icon-kongyemian"></use>
681
+                    </svg>
682
+                    <div class="name">空页面</div>
683
+                    <div class="fontclass">#icon-kongyemian</div>
684
+                </li>
685
+            
686
+                <li>
687
+                    <svg class="icon" aria-hidden="true">
688
+                        <use xlink:href="#icon-logout"></use>
689
+                    </svg>
690
+                    <div class="name">logout</div>
691
+                    <div class="fontclass">#icon-logout</div>
692
+                </li>
693
+            
694
+                <li>
695
+                    <svg class="icon" aria-hidden="true">
696
+                        <use xlink:href="#icon-cloudupload-o"></use>
697
+                    </svg>
698
+                    <div class="name">cloud upload-o</div>
699
+                    <div class="fontclass">#icon-cloudupload-o</div>
700
+                </li>
701
+                <li>
702
+                    <svg class="icon" aria-hidden="true">
703
+                        <use xlink:href="#icon-manbing-xuanzhong"></use>
704
+                    </svg>
705
+                    <div class="name">慢病</div>
706
+                    <div class="fontclass">#icon-manbing-xuanzhong</div>
707
+                </li>
708
+                
709
+            
710
+        </ul>
711
+
712
+
713
+        <h2 id="symbol-">symbol引用</h2>
714
+        <hr>
715
+
716
+        <p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>
717
+        这种用法其实是做了一个svg的集合,与另外两种相比具有如下特点:</p>
718
+        <ul>
719
+          <li>支持多色图标了,不再受单色限制。</li>
720
+          <li>通过一些技巧,支持像字体那样,通过<code>font-size</code>,<code>color</code>来调整样式。</li>
721
+          <li>兼容性较差,支持 ie9+,及现代浏览器。</li>
722
+          <li>浏览器渲染svg的性能一般,还不如png。</li>
723
+        </ul>
724
+        <p>使用步骤如下:</p>
725
+        <h3 id="-symbol-">第一步:引入项目下面生成的symbol代码:</h3>
726
+        <pre><code class="lang-js hljs javascript"><span class="hljs-comment">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;</span></code></pre>
727
+        <h3 id="-css-">第二步:加入通用css代码(引入一次就行):</h3>
728
+        <pre><code class="lang-js hljs javascript">&lt;style type=<span class="hljs-string">"text/css"</span>&gt;
729
+.icon {
730
+   width: <span class="hljs-number">1</span>em; height: <span class="hljs-number">1</span>em;
731
+   vertical-align: <span class="hljs-number">-0.15</span>em;
732
+   fill: currentColor;
733
+   overflow: hidden;
734
+}
735
+&lt;<span class="hljs-regexp">/style&gt;</span></code></pre>
736
+        <h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
737
+        <pre><code class="lang-js hljs javascript">&lt;svg <span class="hljs-class"><span class="hljs-keyword">class</span></span>=<span class="hljs-string">"icon"</span> aria-hidden=<span class="hljs-string">"true"</span>&gt;<span class="xml"><span class="hljs-tag">
738
+  &lt;<span class="hljs-name">use</span> <span class="hljs-attr">xlink:href</span>=<span class="hljs-string">"#icon-xxx"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">use</span>&gt;</span>
739
+</span>&lt;<span class="hljs-regexp">/svg&gt;
740
+        </span></code></pre>
741
+    </div>
742
+</body>
743
+</html>

+ 582 - 0
src/assets/iconfont/demo_unicode.html View File

1
+
2
+<!DOCTYPE html>
3
+<html>
4
+<head>
5
+    <meta charset="utf-8"/>
6
+    <title>IconFont</title>
7
+    <link rel="stylesheet" href="demo.css">
8
+
9
+    <style type="text/css">
10
+
11
+        @font-face {font-family: "iconfont";
12
+          src: url('iconfont.eot'); /* IE9*/
13
+          src: url('iconfont.eot#iefix') format('embedded-opentype'), /* IE6-IE8 */
14
+          url('iconfont.woff') format('woff'), /* chrome, firefox */
15
+          url('iconfont.ttf') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
16
+          url('iconfont.svg#iconfont') format('svg'); /* iOS 4.1- */
17
+        }
18
+
19
+        .iconfont {
20
+          font-family:"iconfont" !important;
21
+          font-size:16px;
22
+          font-style:normal;
23
+          -webkit-font-smoothing: antialiased;
24
+          -webkit-text-stroke-width: 0.2px;
25
+          -moz-osx-font-smoothing: grayscale;
26
+        }
27
+
28
+    </style>
29
+</head>
30
+<body>
31
+    <div class="main markdown">
32
+        <h1>IconFont 图标</h1>
33
+        <ul class="icon_lists clear">
34
+            
35
+                <li>
36
+                <i class="icon iconfont">&#xe686;</i>
37
+                    <div class="name">电话</div>
38
+                    <div class="code">&amp;#xe686;</div>
39
+                </li>
40
+            
41
+                <li>
42
+                <i class="icon iconfont">&#xe671;</i>
43
+                    <div class="name">电话</div>
44
+                    <div class="code">&amp;#xe671;</div>
45
+                </li>
46
+            
47
+                <li>
48
+                <i class="icon iconfont">&#xe61d;</i>
49
+                    <div class="name">会员</div>
50
+                    <div class="code">&amp;#xe61d;</div>
51
+                </li>
52
+            
53
+                <li>
54
+                <i class="icon iconfont">&#xe60c;</i>
55
+                    <div class="name">健康 水滴</div>
56
+                    <div class="code">&amp;#xe60c;</div>
57
+                </li>
58
+            
59
+                <li>
60
+                <i class="icon iconfont">&#xe777;</i>
61
+                    <div class="name">报错</div>
62
+                    <div class="code">&amp;#xe777;</div>
63
+                </li>
64
+            
65
+                <li>
66
+                <i class="icon iconfont">&#xe602;</i>
67
+                    <div class="name">电话</div>
68
+                    <div class="code">&amp;#xe602;</div>
69
+                </li>
70
+            
71
+                <li>
72
+                <i class="icon iconfont">&#xe8c9;</i>
73
+                    <div class="name">225默认头像</div>
74
+                    <div class="code">&amp;#xe8c9;</div>
75
+                </li>
76
+            
77
+                <li>
78
+                <i class="icon iconfont">&#xe6dd;</i>
79
+                    <div class="name">accessory</div>
80
+                    <div class="code">&amp;#xe6dd;</div>
81
+                </li>
82
+            
83
+                <li>
84
+                <i class="icon iconfont">&#xe6df;</i>
85
+                    <div class="name">add</div>
86
+                    <div class="code">&amp;#xe6df;</div>
87
+                </li>
88
+            
89
+                <li>
90
+                <i class="icon iconfont">&#xe6e1;</i>
91
+                    <div class="name">addition_fill</div>
92
+                    <div class="code">&amp;#xe6e1;</div>
93
+                </li>
94
+            
95
+                <li>
96
+                <i class="icon iconfont">&#xe6e0;</i>
97
+                    <div class="name">addition</div>
98
+                    <div class="code">&amp;#xe6e0;</div>
99
+                </li>
100
+            
101
+                <li>
102
+                <i class="icon iconfont">&#xe6e2;</i>
103
+                    <div class="name">addressbook_fill</div>
104
+                    <div class="code">&amp;#xe6e2;</div>
105
+                </li>
106
+            
107
+                <li>
108
+                <i class="icon iconfont">&#xe6e3;</i>
109
+                    <div class="name">addressbook</div>
110
+                    <div class="code">&amp;#xe6e3;</div>
111
+                </li>
112
+            
113
+                <li>
114
+                <i class="icon iconfont">&#xe6e4;</i>
115
+                    <div class="name">browse_fill</div>
116
+                    <div class="code">&amp;#xe6e4;</div>
117
+                </li>
118
+            
119
+                <li>
120
+                <i class="icon iconfont">&#xe6e5;</i>
121
+                    <div class="name">brush</div>
122
+                    <div class="code">&amp;#xe6e5;</div>
123
+                </li>
124
+            
125
+                <li>
126
+                <i class="icon iconfont">&#xe6e6;</i>
127
+                    <div class="name">brush_fill</div>
128
+                    <div class="code">&amp;#xe6e6;</div>
129
+                </li>
130
+            
131
+                <li>
132
+                <i class="icon iconfont">&#xe6eb;</i>
133
+                    <div class="name">computer_fill</div>
134
+                    <div class="code">&amp;#xe6eb;</div>
135
+                </li>
136
+            
137
+                <li>
138
+                <i class="icon iconfont">&#xe6ec;</i>
139
+                    <div class="name">computer</div>
140
+                    <div class="code">&amp;#xe6ec;</div>
141
+                </li>
142
+            
143
+                <li>
144
+                <i class="icon iconfont">&#xe6ed;</i>
145
+                    <div class="name">coordinates_fill</div>
146
+                    <div class="code">&amp;#xe6ed;</div>
147
+                </li>
148
+            
149
+                <li>
150
+                <i class="icon iconfont">&#xe6ee;</i>
151
+                    <div class="name">coordinates</div>
152
+                    <div class="code">&amp;#xe6ee;</div>
153
+                </li>
154
+            
155
+                <li>
156
+                <i class="icon iconfont">&#xe6ef;</i>
157
+                    <div class="name">coupons_fill</div>
158
+                    <div class="code">&amp;#xe6ef;</div>
159
+                </li>
160
+            
161
+                <li>
162
+                <i class="icon iconfont">&#xe6f0;</i>
163
+                    <div class="name">customerservice_fill</div>
164
+                    <div class="code">&amp;#xe6f0;</div>
165
+                </li>
166
+            
167
+                <li>
168
+                <i class="icon iconfont">&#xe6f1;</i>
169
+                    <div class="name">customerservice</div>
170
+                    <div class="code">&amp;#xe6f1;</div>
171
+                </li>
172
+            
173
+                <li>
174
+                <i class="icon iconfont">&#xe6f3;</i>
175
+                    <div class="name">document</div>
176
+                    <div class="code">&amp;#xe6f3;</div>
177
+                </li>
178
+            
179
+                <li>
180
+                <i class="icon iconfont">&#xe6f4;</i>
181
+                    <div class="name">document_fill</div>
182
+                    <div class="code">&amp;#xe6f4;</div>
183
+                </li>
184
+            
185
+                <li>
186
+                <i class="icon iconfont">&#xe6f6;</i>
187
+                    <div class="name">dynamic_fill</div>
188
+                    <div class="code">&amp;#xe6f6;</div>
189
+                </li>
190
+            
191
+                <li>
192
+                <i class="icon iconfont">&#xe6f5;</i>
193
+                    <div class="name">editor</div>
194
+                    <div class="code">&amp;#xe6f5;</div>
195
+                </li>
196
+            
197
+                <li>
198
+                <i class="icon iconfont">&#xe6f9;</i>
199
+                    <div class="name">emoji</div>
200
+                    <div class="code">&amp;#xe6f9;</div>
201
+                </li>
202
+            
203
+                <li>
204
+                <i class="icon iconfont">&#xe6f8;</i>
205
+                    <div class="name">enter</div>
206
+                    <div class="code">&amp;#xe6f8;</div>
207
+                </li>
208
+            
209
+                <li>
210
+                <i class="icon iconfont">&#xe6fb;</i>
211
+                    <div class="name">flag_fill</div>
212
+                    <div class="code">&amp;#xe6fb;</div>
213
+                </li>
214
+            
215
+                <li>
216
+                <i class="icon iconfont">&#xe6fc;</i>
217
+                    <div class="name">flag</div>
218
+                    <div class="code">&amp;#xe6fc;</div>
219
+                </li>
220
+            
221
+                <li>
222
+                <i class="icon iconfont">&#xe6ff;</i>
223
+                    <div class="name">group_fill</div>
224
+                    <div class="code">&amp;#xe6ff;</div>
225
+                </li>
226
+            
227
+                <li>
228
+                <i class="icon iconfont">&#xe700;</i>
229
+                    <div class="name">headlines_fill</div>
230
+                    <div class="code">&amp;#xe700;</div>
231
+                </li>
232
+            
233
+                <li>
234
+                <i class="icon iconfont">&#xe702;</i>
235
+                    <div class="name">homepage_fill</div>
236
+                    <div class="code">&amp;#xe702;</div>
237
+                </li>
238
+            
239
+                <li>
240
+                <i class="icon iconfont">&#xe703;</i>
241
+                    <div class="name">homepage</div>
242
+                    <div class="code">&amp;#xe703;</div>
243
+                </li>
244
+            
245
+                <li>
246
+                <i class="icon iconfont">&#xe704;</i>
247
+                    <div class="name">interactive_fill</div>
248
+                    <div class="code">&amp;#xe704;</div>
249
+                </li>
250
+            
251
+                <li>
252
+                <i class="icon iconfont">&#xe705;</i>
253
+                    <div class="name">interactive</div>
254
+                    <div class="code">&amp;#xe705;</div>
255
+                </li>
256
+            
257
+                <li>
258
+                <i class="icon iconfont">&#xe706;</i>
259
+                    <div class="name">label</div>
260
+                    <div class="code">&amp;#xe706;</div>
261
+                </li>
262
+            
263
+                <li>
264
+                <i class="icon iconfont">&#xe707;</i>
265
+                    <div class="name">like_fill</div>
266
+                    <div class="code">&amp;#xe707;</div>
267
+                </li>
268
+            
269
+                <li>
270
+                <i class="icon iconfont">&#xe708;</i>
271
+                    <div class="name">like</div>
272
+                    <div class="code">&amp;#xe708;</div>
273
+                </li>
274
+            
275
+                <li>
276
+                <i class="icon iconfont">&#xe709;</i>
277
+                    <div class="name">lock</div>
278
+                    <div class="code">&amp;#xe709;</div>
279
+                </li>
280
+            
281
+                <li>
282
+                <i class="icon iconfont">&#xe70a;</i>
283
+                    <div class="name">mail</div>
284
+                    <div class="code">&amp;#xe70a;</div>
285
+                </li>
286
+            
287
+                <li>
288
+                <i class="icon iconfont">&#xe70b;</i>
289
+                    <div class="name">manage</div>
290
+                    <div class="code">&amp;#xe70b;</div>
291
+                </li>
292
+            
293
+                <li>
294
+                <i class="icon iconfont">&#xe70c;</i>
295
+                    <div class="name">message</div>
296
+                    <div class="code">&amp;#xe70c;</div>
297
+                </li>
298
+            
299
+                <li>
300
+                <i class="icon iconfont">&#xe70e;</i>
301
+                    <div class="name">mine_fill</div>
302
+                    <div class="code">&amp;#xe70e;</div>
303
+                </li>
304
+            
305
+                <li>
306
+                <i class="icon iconfont">&#xe710;</i>
307
+                    <div class="name">mobilephone_fill</div>
308
+                    <div class="code">&amp;#xe710;</div>
309
+                </li>
310
+            
311
+                <li>
312
+                <i class="icon iconfont">&#xe70f;</i>
313
+                    <div class="name">mobilephone</div>
314
+                    <div class="code">&amp;#xe70f;</div>
315
+                </li>
316
+            
317
+                <li>
318
+                <i class="icon iconfont">&#xe712;</i>
319
+                    <div class="name">offline_fill</div>
320
+                    <div class="code">&amp;#xe712;</div>
321
+                </li>
322
+            
323
+                <li>
324
+                <i class="icon iconfont">&#xe713;</i>
325
+                    <div class="name">offline</div>
326
+                    <div class="code">&amp;#xe713;</div>
327
+                </li>
328
+            
329
+                <li>
330
+                <i class="icon iconfont">&#xe714;</i>
331
+                    <div class="name">order_fill</div>
332
+                    <div class="code">&amp;#xe714;</div>
333
+                </li>
334
+            
335
+                <li>
336
+                <i class="icon iconfont">&#xe715;</i>
337
+                    <div class="name">other</div>
338
+                    <div class="code">&amp;#xe715;</div>
339
+                </li>
340
+            
341
+                <li>
342
+                <i class="icon iconfont">&#xe716;</i>
343
+                    <div class="name">picture_fill</div>
344
+                    <div class="code">&amp;#xe716;</div>
345
+                </li>
346
+            
347
+                <li>
348
+                <i class="icon iconfont">&#xe71b;</i>
349
+                    <div class="name">prompt_fill</div>
350
+                    <div class="code">&amp;#xe71b;</div>
351
+                </li>
352
+            
353
+                <li>
354
+                <i class="icon iconfont">&#xe71c;</i>
355
+                    <div class="name">qrcode_fill</div>
356
+                    <div class="code">&amp;#xe71c;</div>
357
+                </li>
358
+            
359
+                <li>
360
+                <i class="icon iconfont">&#xe71f;</i>
361
+                    <div class="name">remind_fill</div>
362
+                    <div class="code">&amp;#xe71f;</div>
363
+                </li>
364
+            
365
+                <li>
366
+                <i class="icon iconfont">&#xe721;</i>
367
+                    <div class="name">remind</div>
368
+                    <div class="code">&amp;#xe721;</div>
369
+                </li>
370
+            
371
+                <li>
372
+                <i class="icon iconfont">&#xe720;</i>
373
+                    <div class="name">return</div>
374
+                    <div class="code">&amp;#xe720;</div>
375
+                </li>
376
+            
377
+                <li>
378
+                <i class="icon iconfont">&#xe727;</i>
379
+                    <div class="name">service_fill</div>
380
+                    <div class="code">&amp;#xe727;</div>
381
+                </li>
382
+            
383
+                <li>
384
+                <i class="icon iconfont">&#xe728;</i>
385
+                    <div class="name">service</div>
386
+                    <div class="code">&amp;#xe728;</div>
387
+                </li>
388
+            
389
+                <li>
390
+                <i class="icon iconfont">&#xe729;</i>
391
+                    <div class="name">setup_fill</div>
392
+                    <div class="code">&amp;#xe729;</div>
393
+                </li>
394
+            
395
+                <li>
396
+                <i class="icon iconfont">&#xe72a;</i>
397
+                    <div class="name">setup</div>
398
+                    <div class="code">&amp;#xe72a;</div>
399
+                </li>
400
+            
401
+                <li>
402
+                <i class="icon iconfont">&#xe72b;</i>
403
+                    <div class="name">smallscreen</div>
404
+                    <div class="code">&amp;#xe72b;</div>
405
+                </li>
406
+            
407
+                <li>
408
+                <i class="icon iconfont">&#xe72d;</i>
409
+                    <div class="name">success_fill</div>
410
+                    <div class="code">&amp;#xe72d;</div>
411
+                </li>
412
+            
413
+                <li>
414
+                <i class="icon iconfont">&#xe72e;</i>
415
+                    <div class="name">success</div>
416
+                    <div class="code">&amp;#xe72e;</div>
417
+                </li>
418
+            
419
+                <li>
420
+                <i class="icon iconfont">&#xe735;</i>
421
+                    <div class="name">time_fill</div>
422
+                    <div class="code">&amp;#xe735;</div>
423
+                </li>
424
+            
425
+                <li>
426
+                <i class="icon iconfont">&#xe738;</i>
427
+                    <div class="name">trash</div>
428
+                    <div class="code">&amp;#xe738;</div>
429
+                </li>
430
+            
431
+                <li>
432
+                <i class="icon iconfont">&#xe739;</i>
433
+                    <div class="name">trash_fill</div>
434
+                    <div class="code">&amp;#xe739;</div>
435
+                </li>
436
+            
437
+                <li>
438
+                <i class="icon iconfont">&#xe73a;</i>
439
+                    <div class="name">undo</div>
440
+                    <div class="code">&amp;#xe73a;</div>
441
+                </li>
442
+            
443
+                <li>
444
+                <i class="icon iconfont">&#xe73e;</i>
445
+                    <div class="name">workbench_fill</div>
446
+                    <div class="code">&amp;#xe73e;</div>
447
+                </li>
448
+            
449
+                <li>
450
+                <i class="icon iconfont">&#xe639;</i>
451
+                    <div class="name">导入</div>
452
+                    <div class="code">&amp;#xe639;</div>
453
+                </li>
454
+            
455
+                <li>
456
+                <i class="icon iconfont">&#xe741;</i>
457
+                    <div class="name">search</div>
458
+                    <div class="code">&amp;#xe741;</div>
459
+                </li>
460
+            
461
+                <li>
462
+                <i class="icon iconfont">&#xe6ac;</i>
463
+                    <div class="name">电话</div>
464
+                    <div class="code">&amp;#xe6ac;</div>
465
+                </li>
466
+            
467
+                <li>
468
+                <i class="icon iconfont">&#xe749;</i>
469
+                    <div class="name">packup</div>
470
+                    <div class="code">&amp;#xe749;</div>
471
+                </li>
472
+            
473
+                <li>
474
+                <i class="icon iconfont">&#xe74a;</i>
475
+                    <div class="name">unfold</div>
476
+                    <div class="code">&amp;#xe74a;</div>
477
+                </li>
478
+            
479
+                <li>
480
+                <i class="icon iconfont">&#xe74b;</i>
481
+                    <div class="name">wangwang_fill</div>
482
+                    <div class="code">&amp;#xe74b;</div>
483
+                </li>
484
+            
485
+                <li>
486
+                <i class="icon iconfont">&#xe600;</i>
487
+                    <div class="name">验证码</div>
488
+                    <div class="code">&amp;#xe600;</div>
489
+                </li>
490
+            
491
+                <li>
492
+                <i class="icon iconfont">&#xe610;</i>
493
+                    <div class="name">报错-插画</div>
494
+                    <div class="code">&amp;#xe610;</div>
495
+                </li>
496
+            
497
+                <li>
498
+                <i class="icon iconfont">&#xe643;</i>
499
+                    <div class="name">朋友</div>
500
+                    <div class="code">&amp;#xe643;</div>
501
+                </li>
502
+            
503
+                <li>
504
+                <i class="icon iconfont">&#xe644;</i>
505
+                    <div class="name">所有</div>
506
+                    <div class="code">&amp;#xe644;</div>
507
+                </li>
508
+            
509
+                <li>
510
+                <i class="icon iconfont">&#xe645;</i>
511
+                    <div class="name">会员</div>
512
+                    <div class="code">&amp;#xe645;</div>
513
+                </li>
514
+            
515
+                <li>
516
+                <i class="icon iconfont">&#xe641;</i>
517
+                    <div class="name">会员</div>
518
+                    <div class="code">&amp;#xe641;</div>
519
+                </li>
520
+            
521
+                <li>
522
+                <i class="icon iconfont">&#xe637;</i>
523
+                    <div class="name">空页面</div>
524
+                    <div class="code">&amp;#xe637;</div>
525
+                </li>
526
+            
527
+                <li>
528
+                <i class="icon iconfont">&#xe78c;</i>
529
+                    <div class="name">logout</div>
530
+                    <div class="code">&amp;#xe78c;</div>
531
+                </li>
532
+            
533
+                <li>
534
+                <i class="icon iconfont">&#xe7d9;</i>
535
+                    <div class="name">cloud upload-o</div>
536
+                    <div class="code">&amp;#xe7d9;</div>
537
+                </li>
538
+            
539
+        </ul>
540
+        <h2 id="unicode-">unicode引用</h2>
541
+        <hr>
542
+
543
+        <p>unicode是字体在网页端最原始的应用方式,特点是:</p>
544
+        <ul>
545
+        <li>兼容性最好,支持ie6+,及所有现代浏览器。</li>
546
+        <li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
547
+        <li>但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。</li>
548
+        </ul>
549
+        <blockquote>
550
+        <p>注意:新版iconfont支持多色图标,这些多色图标在unicode模式下将不能使用,如果有需求建议使用symbol的引用方式</p>
551
+        </blockquote>
552
+        <p>unicode使用步骤如下:</p>
553
+        <h3 id="-font-face">第一步:拷贝项目下面生成的font-face</h3>
554
+        <pre><code class="lang-js hljs javascript">@font-face {
555
+  font-family: <span class="hljs-string">'iconfont'</span>;
556
+  src: url(<span class="hljs-string">'iconfont.eot'</span>);
557
+  src: url(<span class="hljs-string">'iconfont.eot?#iefix'</span>) format(<span class="hljs-string">'embedded-opentype'</span>),
558
+  url(<span class="hljs-string">'iconfont.woff'</span>) format(<span class="hljs-string">'woff'</span>),
559
+  url(<span class="hljs-string">'iconfont.ttf'</span>) format(<span class="hljs-string">'truetype'</span>),
560
+  url(<span class="hljs-string">'iconfont.svg#iconfont'</span>) format(<span class="hljs-string">'svg'</span>);
561
+}
562
+</code></pre>
563
+        <h3 id="-iconfont-">第二步:定义使用iconfont的样式</h3>
564
+        <pre><code class="lang-js hljs javascript">.iconfont{
565
+  font-family:<span class="hljs-string">"iconfont"</span> !important;
566
+  font-size:<span class="hljs-number">16</span>px;font-style:normal;
567
+  -webkit-font-smoothing: antialiased;
568
+  -webkit-text-stroke-width: <span class="hljs-number">0.2</span>px;
569
+  -moz-osx-font-smoothing: grayscale;
570
+}
571
+</code></pre>
572
+        <h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>
573
+        <pre><code class="lang-js hljs javascript">&lt;i <span class="hljs-class"><span class="hljs-keyword">class</span></span>=<span class="hljs-string">"iconfont"</span>&gt;&amp;#x33;<span class="xml"><span class="hljs-tag">&lt;/<span class="hljs-name">i</span>&gt;</span></span></code></pre>
574
+
575
+        <blockquote>
576
+        <p>"iconfont"是你项目下的font-family。可以通过编辑项目查看,默认是"iconfont"。</p>
577
+        </blockquote>
578
+    </div>
579
+
580
+
581
+</body>
582
+</html>

File diff suppressed because it is too large
+ 361 - 0
src/assets/iconfont/iconfont.css


BIN
src/assets/iconfont/iconfont.eot View File


File diff suppressed because it is too large
+ 1 - 0
src/assets/iconfont/iconfont.js


File diff suppressed because it is too large
+ 284 - 0
src/assets/iconfont/iconfont.svg


BIN
src/assets/iconfont/iconfont.ttf View File


BIN
src/assets/iconfont/iconfont.woff View File


BIN
src/assets/images/add.png View File


BIN
src/assets/images/add2.png View File


BIN
src/assets/images/add3.png View File


BIN
src/assets/images/add4.png View File


BIN
src/assets/images/b1.png View File


BIN
src/assets/images/b2.png View File


BIN
src/assets/images/b3.png View File


BIN
src/assets/images/b4.png View File


BIN
src/assets/images/banner.png View File


BIN
src/assets/images/homebanner.jpg View File


BIN
src/assets/images/hospital.png View File


BIN
src/assets/images/i1.png View File


BIN
src/assets/images/i10.png View File


BIN
src/assets/images/i2.png View File


BIN
src/assets/images/i3.png View File


BIN
src/assets/images/i4.png View File


BIN
src/assets/images/i5.png View File


BIN
src/assets/images/i6.png View File


BIN
src/assets/images/i7.png View File


+ 0 - 0
src/assets/images/i8.png View File


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