Browse Source

no message

庄逸洲 4 years ago
commit
8f6457a763
100 changed files with 22448 additions and 0 deletions
  1. 17 0
      .babelrc
  2. 14 0
      .editorconfig
  3. 3 0
      .eslintignore
  4. 199 0
      .eslintrc.js
  5. 2 0
      .gitattributes
  6. 4 0
      .gitignore
  7. 10 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. 9 0
      XT_Vue.iml
  13. 56 0
      build/build.js
  14. 54 0
      build/check-versions.js
  15. BIN
      build/logo.png
  16. 110 0
      build/utils.js
  17. 22 0
      build/vue-loader.conf.js
  18. 105 0
      build/webpack.base.conf.js
  19. 88 0
      build/webpack.dev.conf.js
  20. 175 0
      build/webpack.prod.conf.js
  21. 12 0
      config/dev.env.js
  22. 96 0
      config/index.js
  23. 5 0
      config/prod.env.js
  24. 5 0
      config/sit.env.js
  25. BIN
      favicon.ico
  26. 15 0
      index.html
  27. 14970 0
      package-lock.json
  28. 133 0
      package.json
  29. 11 0
      src/App.vue
  30. 261 0
      src/api/advice.js
  31. 41 0
      src/api/article.js
  32. 9 0
      src/api/bloodPress.js
  33. 41 0
      src/api/data.js
  34. 9 0
      src/api/datastore.js
  35. 192 0
      src/api/device/device.js
  36. 247 0
      src/api/dialysis.js
  37. 86 0
      src/api/dialysis_record.js
  38. 14 0
      src/api/doctor.js
  39. 40 0
      src/api/inspection.js
  40. 27 0
      src/api/invoice.js
  41. 29 0
      src/api/login.js
  42. 38 0
      src/api/login/login.js
  43. 236 0
      src/api/patient.js
  44. 11 0
      src/api/print_data.js
  45. 8 0
      src/api/public.js
  46. 8 0
      src/api/qiniu.js
  47. 9 0
      src/api/remoteSearch.js
  48. 99 0
      src/api/role/admin.js
  49. 72 0
      src/api/role/role.js
  50. 61 0
      src/api/schedule.js
  51. 33 0
      src/api/schedule_template/patient.js
  52. 84 0
      src/api/service.js
  53. 26 0
      src/api/signandweigh.js
  54. 8 0
      src/api/statistics.js
  55. 496 0
      src/api/stock.js
  56. 9 0
      src/api/transaction.js
  57. BIN
      src/assets/401_images/401.gif
  58. BIN
      src/assets/404_images/404.png
  59. BIN
      src/assets/404_images/404_cloud.png
  60. BIN
      src/assets/custom-theme/fonts/element-icons.ttf
  61. BIN
      src/assets/custom-theme/fonts/element-icons.woff
  62. 1 0
      src/assets/custom-theme/index.css
  63. 199 0
      src/assets/echarts-macarons.js
  64. 3 0
      src/assets/eventBus.js
  65. BIN
      src/assets/home/analyze.png
  66. BIN
      src/assets/home/equipment.png
  67. BIN
      src/assets/home/prescription.png
  68. BIN
      src/assets/home/record.png
  69. BIN
      src/assets/home/scheduling.png
  70. BIN
      src/assets/home/sick.png
  71. BIN
      src/assets/home/user.png
  72. BIN
      src/assets/home/userData.png
  73. 370 0
      src/assets/icon/demo.css
  74. 52 0
      src/assets/icon/demo_fontclass.html
  75. 79 0
      src/assets/icon/demo_symbol.html
  76. 90 0
      src/assets/icon/demo_unicode.html
  77. 21 0
      src/assets/icon/iconfont.css
  78. BIN
      src/assets/icon/iconfont.eot
  79. 1 0
      src/assets/icon/iconfont.js
  80. 32 0
      src/assets/icon/iconfont.svg
  81. BIN
      src/assets/icon/iconfont.ttf
  82. BIN
      src/assets/icon/iconfont.woff
  83. 370 0
      src/assets/iconfont/demo.css
  84. 544 0
      src/assets/iconfont/demo_fontclass.html
  85. 743 0
      src/assets/iconfont/demo_symbol.html
  86. 582 0
      src/assets/iconfont/demo_unicode.html
  87. 361 0
      src/assets/iconfont/iconfont.css
  88. BIN
      src/assets/iconfont/iconfont.eot
  89. 1 0
      src/assets/iconfont/iconfont.js
  90. 284 0
      src/assets/iconfont/iconfont.svg
  91. BIN
      src/assets/iconfont/iconfont.ttf
  92. BIN
      src/assets/iconfont/iconfont.woff
  93. BIN
      src/assets/img/data.jpg
  94. BIN
      src/assets/img/jin_blog.png
  95. BIN
      src/assets/record/1.png
  96. BIN
      src/assets/record/10.png
  97. BIN
      src/assets/record/2.png
  98. BIN
      src/assets/record/3.png
  99. BIN
      src/assets/record/4.png
  100. 0 0
      src/assets/record/5.png

+ 17 - 0
.babelrc View File

@@ -0,0 +1,17 @@
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": ["transform-vue-jsx", "transform-runtime"],
12
+  "env": {
13
+    "development":{
14
+      "plugins": ["dynamic-import-node"]
15
+    }
16
+  }
17
+}

+ 14 - 0
.editorconfig View File

@@ -0,0 +1,14 @@
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

@@ -0,0 +1,3 @@
1
+build/*.js
2
+config/*.js
3
+src/assets

+ 199 - 0
.eslintrc.js View File

@@ -0,0 +1,199 @@
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

@@ -0,0 +1,2 @@
1
+# Auto detect text files and perform LF normalization
2
+* text=auto

+ 4 - 0
.gitignore View File

@@ -0,0 +1,4 @@
1
+node_modules
2
+.svn
3
+dist
4
+.git

+ 10 - 0
.postcssrc.js View File

@@ -0,0 +1,10 @@
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
+}

+ 5 - 0
.travis.yml View File

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

+ 21 - 0
LICENSE View File

@@ -0,0 +1,21 @@
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

@@ -0,0 +1,185 @@
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

@@ -0,0 +1,195 @@
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

+ 9 - 0
XT_Vue.iml View File

@@ -0,0 +1,9 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<module type="WEB_MODULE" version="4">
3
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
4
+    <exclude-output />
5
+    <content url="file://$MODULE_DIR$" />
6
+    <orderEntry type="inheritedJdk" />
7
+    <orderEntry type="sourceFolder" forTests="false" />
8
+  </component>
9
+</module>

+ 56 - 0
build/build.js View File

@@ -0,0 +1,56 @@
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

@@ -0,0 +1,54 @@
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


+ 110 - 0
build/utils.js View File

@@ -0,0 +1,110 @@
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
+        fallback: 'vue-style-loader'
51
+      })
52
+    } else {
53
+      return ['vue-style-loader'].concat(loaders)
54
+    }
55
+  }
56
+
57
+  // https://vue-loader.vuejs.org/en/configurations/extract-css.html
58
+  return {
59
+    css: generateLoaders(),
60
+    postcss: generateLoaders(),
61
+    less: generateLoaders('less'),
62
+    sass: generateLoaders('sass', { indentedSyntax: true }),
63
+    scss: generateLoaders('sass').concat(
64
+      {
65
+        loader: 'sass-resources-loader',
66
+        options: {
67
+          resources: path.resolve(__dirname, '../src/styles/variables.scss')//这里按照你的文件路径填写
68
+        }
69
+      }
70
+    ),
71
+    // scss: generateLoaders('sass'),
72
+    stylus: generateLoaders('stylus'),
73
+    styl: generateLoaders('stylus')
74
+  }
75
+}
76
+
77
+
78
+// Generate loaders for standalone style files (outside of .vue)
79
+exports.styleLoaders = function (options) {
80
+  const output = []
81
+  const loaders = exports.cssLoaders(options)
82
+
83
+  for (const extension in loaders) {
84
+    const loader = loaders[extension]
85
+    output.push({
86
+      test: new RegExp('\\.' + extension + '$'),
87
+      use: loader
88
+    })
89
+  }
90
+
91
+  return output
92
+}
93
+
94
+exports.createNotifierCallback = () => {
95
+  const notifier = require('node-notifier')
96
+
97
+  return (severity, errors) => {
98
+    if (severity !== 'error') return
99
+
100
+    const error = errors[0]
101
+    const filename = error.file && error.file.split('!').pop()
102
+
103
+    notifier.notify({
104
+      title: packageConfig.name,
105
+      message: severity + ': ' + error.name,
106
+      subtitle: filename || '',
107
+      icon: path.join(__dirname, 'logo.png')
108
+    })
109
+  }
110
+}

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

@@ -0,0 +1,22 @@
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
+}

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

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

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

@@ -0,0 +1,88 @@
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

@@ -0,0 +1,175 @@
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

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

@@ -0,0 +1,12 @@
1
+// module.exports = {
2
+//   NODE_ENV: '"development"',
3
+//   ENV_CONFIG: '"dev"',
4
+//   BASE_API: '"https://api-dev"'
5
+// }
6
+module.exports = {
7
+  NODE_ENV: '"development"',
8
+  ENV_CONFIG: '"dev"',
9
+  BASE_API: '"http://api.xt.test.sgjyun.com"', // '"http://localhost:9529"'//http://api.xt.test.sgjyun.com
10
+  PATIENT_SIT: '"http://test1.sgjyun.com"',
11
+  MIRCOMALL_SIT: '"http://mall.test.sgjyun.com"'
12
+}

+ 96 - 0
config/index.js View File

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

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

@@ -0,0 +1,5 @@
1
+module.exports = {
2
+  NODE_ENV: '"production"',
3
+  ENV_CONFIG: '"prod"',
4
+  BASE_API: '"http://api.xt.kuyicloud.com"'
5
+}

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

@@ -0,0 +1,5 @@
1
+module.exports = {
2
+  NODE_ENV: '"production"',
3
+  ENV_CONFIG: '"sit"',
4
+  BASE_API: '"http://api.xt.test.sgjyun.com"'
5
+}

BIN
favicon.ico View File


+ 15 - 0
index.html View File

@@ -0,0 +1,15 @@
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="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
8
+    <title>血透管理-酷医云</title>
9
+  </head>
10
+  <body>
11
+    <script src=<%= htmlWebpackPlugin.options.path %>/tinymce4.7.5/tinymce.min.js></script>
12
+    <div id="app"></div>
13
+    <!-- built files will be auto injected -->
14
+  </body>
15
+</html>

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


+ 133 - 0
package.json View File

@@ -0,0 +1,133 @@
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
+    "ajv": "^6.5.3",
40
+    "axios": "0.17.1",
41
+    "clipboard": "1.7.1",
42
+    "codemirror": "5.32.0",
43
+    "connect": "3.6.6",
44
+    "driver.js": "0.5.2",
45
+    "dropzone": "5.2.0",
46
+    "echarts": "3.8.5",
47
+    "element-ui": "^2.7.2",
48
+    "file-saver": "1.3.3",
49
+    "font-awesome": "4.7.0",
50
+    "js-cookie": "2.2.0",
51
+    "jsonlint": "1.6.3",
52
+    "jszip": "3.1.5",
53
+    "mockjs": "1.0.1-beta3",
54
+    "normalize.css": "7.0.0",
55
+    "nprogress": "0.2.0",
56
+    "print-js": "^1.0.50",
57
+    "qrcodejs2": "0.0.2",
58
+    "screenfull": "3.3.2",
59
+    "serve-static": "1.13.2",
60
+    "showdown": "1.8.5",
61
+    "simplemde": "1.11.2",
62
+    "sortablejs": "1.7.0",
63
+    "vue": "2.5.16",
64
+    "vue-count-to": "1.0.13",
65
+    "vue-i18n": "7.3.2",
66
+    "vue-multiselect": "2.0.8",
67
+    "vue-router": "3.0.1",
68
+    "vue-splitpane": "1.0.2",
69
+    "vuedraggable": "^2.16.0",
70
+    "vuex": "3.0.1",
71
+    "xlsx": "^0.11.16"
72
+  },
73
+  "devDependencies": {
74
+    "autoprefixer": "7.2.3",
75
+    "babel-core": "6.26.0",
76
+    "babel-eslint": "8.0.3",
77
+    "babel-helper-vue-jsx-merge-props": "2.0.3",
78
+    "babel-loader": "7.1.2",
79
+    "babel-plugin-dynamic-import-node": "^1.2.0",
80
+    "babel-plugin-syntax-jsx": "6.18.0",
81
+    "babel-plugin-transform-runtime": "6.23.0",
82
+    "babel-plugin-transform-vue-jsx": "3.5.0",
83
+    "babel-preset-env": "1.6.1",
84
+    "babel-preset-stage-2": "6.24.1",
85
+    "chalk": "2.3.0",
86
+    "copy-webpack-plugin": "4.3.0",
87
+    "cross-env": "5.1.1",
88
+    "css-loader": "0.28.7",
89
+    "eslint": "4.13.1",
90
+    "eslint-friendly-formatter": "3.0.0",
91
+    "eslint-loader": "1.9.0",
92
+    "eslint-plugin-html": "4.0.1",
93
+    "extract-text-webpack-plugin": "3.0.2",
94
+    "file-loader": "1.1.5",
95
+    "friendly-errors-webpack-plugin": "1.6.1",
96
+    "html-webpack-plugin": "2.30.1",
97
+    "husky": "0.14.3",
98
+    "lint-staged": "7.2.0",
99
+    "node-notifier": "5.1.2",
100
+    "node-sass": "^4.7.2",
101
+    "optimize-css-assets-webpack-plugin": "3.2.0",
102
+    "ora": "1.3.0",
103
+    "portfinder": "1.0.13",
104
+    "postcss-import": "11.0.0",
105
+    "postcss-loader": "2.0.9",
106
+    "postcss-url": "7.3.0",
107
+    "rimraf": "2.6.2",
108
+    "sass-loader": "^6.0.7",
109
+    "sass-resources-loader": "^1.3.4",
110
+    "script-loader": "0.7.2",
111
+    "semver": "5.4.1",
112
+    "shelljs": "0.7.8",
113
+    "svg-sprite-loader": "3.5.2",
114
+    "uglifyjs-webpack-plugin": "1.1.3",
115
+    "url-loader": "0.6.2",
116
+    "vue-loader": "13.7.2",
117
+    "vue-style-loader": "3.0.3",
118
+    "vue-template-compiler": "2.5.16",
119
+    "webpack": "3.10.0",
120
+    "webpack-bundle-analyzer": "2.9.1",
121
+    "webpack-dev-server": "2.9.7",
122
+    "webpack-merge": "4.1.1"
123
+  },
124
+  "engines": {
125
+    "node": ">= 4.0.0",
126
+    "npm": ">= 3.0.0"
127
+  },
128
+  "browserslist": [
129
+    "> 1%",
130
+    "last 2 versions",
131
+    "not ie <= 8"
132
+  ]
133
+}

+ 11 - 0
src/App.vue View File

@@ -0,0 +1,11 @@
1
+<template>
2
+  <div id="app">
3
+    <router-view></router-view>
4
+  </div>
5
+</template>
6
+
7
+<script>
8
+  export default{
9
+    name: 'App'
10
+  }
11
+</script>

+ 261 - 0
src/api/advice.js View File

@@ -0,0 +1,261 @@
1
+import request from '@/utils/request'
2
+
3
+export function getAdviceConfig(){
4
+    return request({
5
+        url:'/api/getadviceconfigs',
6
+        method:'get',
7
+    })
8
+}
9
+
10
+
11
+export function CreateDoctorAdvice(id, advice){
12
+    return request({
13
+        url:'/api/patients/advice/create?id='+id,
14
+        method:'post',
15
+        data:advice,
16
+    })
17
+}
18
+
19
+
20
+export function EditDoctorAdvice(patient, id, advice){
21
+    return request({
22
+        url:'/api/patients/advice/edit?id='+id + "&patient=" + patient,
23
+        method:'Put',
24
+        data:advice,
25
+    })
26
+}
27
+
28
+
29
+export function ExecDoctorAdvice(patient, id, time){
30
+    var params = {
31
+        id:id,
32
+        patient:patient,
33
+        execution_time: time,
34
+    }
35
+    return request({
36
+        url:'/api/patients/advice/exec',
37
+        method:'Post',
38
+        params:params,
39
+    })
40
+}
41
+export function CheckDoctorAdvice(patient, id){
42
+    var params = {
43
+        id:id,
44
+        patient:patient,
45
+        // execution_time: time,
46
+    }
47
+    return request({
48
+        url:'/api/patients/advice/check',
49
+        method:'Post',
50
+        params:params,
51
+    })
52
+}
53
+export function CheckGroupAdvice(groupno){
54
+    var params = {
55
+        groupno:groupno,
56
+    }
57
+    return request({
58
+        url:'/api/patients/advice/checkgroup',
59
+        method:'Post',
60
+        params:params,
61
+    })
62
+}
63
+
64
+
65
+export function getDoctorAdviceList(params){
66
+    return request({
67
+        url:'/api/patients/advices',
68
+        method:'Get',
69
+        params:params,
70
+    })
71
+}
72
+
73
+
74
+export function StopDoctorAdvice(id, reason){
75
+    return request({
76
+        url:'/api/patients/advice/stop?id='+id,
77
+        method:'Post',
78
+        data:reason,
79
+    })
80
+}
81
+
82
+export function StopGroupAdvice(groupno, reason){
83
+    return request({
84
+        url:'/api/patients/advice/stopgroup?groupno='+groupno,
85
+        method:'Post',
86
+        data:reason,
87
+    })
88
+}
89
+
90
+export function ExecGroupAdvice(groupno, time){
91
+    return request({
92
+        url:'/api/patients/advice/execgroup?groupno='+groupno +'&execution_time='+time,
93
+        method:'Post',
94
+    })
95
+}
96
+
97
+export function DeleteDoctorAdvice(id){
98
+    return request({
99
+        url:'/api/patients/advice/delete?id='+id,
100
+        method:'Delete',
101
+    })
102
+}
103
+
104
+export function CreateDrugDic(data){
105
+    return request({
106
+        url:'/api/drugdic/create',
107
+        method:'post',
108
+        data:data,
109
+    })
110
+}
111
+export function UpdateDrugDic(id, data){
112
+    return request({
113
+        url:'/api/drugdic/update?id=' + id,
114
+        method:'put',
115
+        data:data,
116
+    })
117
+}
118
+export function DeleteDrugDic(id){
119
+    return request({
120
+        url:'/api/drugdic/delete?id=' + id,
121
+        method:'delete',
122
+    })
123
+}
124
+
125
+export function CreateDrugWay(data){
126
+    return request({
127
+        url:'/api/drugway/create',
128
+        method:'post',
129
+        data:data,
130
+    })
131
+}
132
+
133
+export function UpdateDrugWay(id, data){
134
+    return request({
135
+        url:'/api/drugway/update?id=' + id,
136
+        method:'put',
137
+        data:data,
138
+    })
139
+}
140
+export function DeleteDrugWay(id){
141
+    return request({
142
+        url:'/api/drugway/delete?id=' + id,
143
+        method:'delete',
144
+    })
145
+}
146
+
147
+export function CreateExecutionFrequency(data){
148
+    return request({
149
+        url:'/api/executionfrequency/create',
150
+        method:'post',
151
+        data:data,
152
+    })
153
+}
154
+
155
+export function UpdateExecutionFrequency(id, data){
156
+    return request({
157
+        url:'/api/executionfrequency/update?id=' + id,
158
+        method:'put',
159
+        data:data,
160
+    })
161
+}
162
+export function DeleteExecutionFrequency(id){
163
+    return request({
164
+        url:'/api/executionfrequency/delete?id=' + id,
165
+        method:'delete',
166
+    })
167
+}
168
+export function CreateAdviceTemplate(data){
169
+    return request({
170
+        url:'/api/advicetemplate/create',
171
+        method:'post',
172
+        data:data,
173
+    })
174
+}
175
+
176
+export function UpdateAdviceTemplate(id, data){
177
+    return request({
178
+        url:'/api/advicetemplate/update?id=' + id,
179
+        method:'put',
180
+        data:data,
181
+    })
182
+}
183
+export function DeleteAdviceTemplate(id,template_id,parent_id){
184
+    return request({
185
+        url:'/api/advicetemplate/delete?id=' + id+"&template_id="+template_id+"&parent_id="+parent_id,
186
+        method:'delete',
187
+    })
188
+}
189
+
190
+
191
+export function postAdviceTemplate(params,name){
192
+  return request({
193
+    url:'/api/advicetemplate/create?template_name='+name,
194
+    method:'post',
195
+    data:params
196
+  })
197
+}
198
+
199
+export function CreateGroupAdvice(id, groupno, advices){
200
+  return request({
201
+      url:'/api/patients/advice/creategroup?id='+id + '&groupno=' + groupno,
202
+      method:'post',
203
+      data:advices,
204
+  })
205
+}
206
+export function DeleteGroupAdvice(groupno){
207
+  return request({
208
+      url:'/api/patients/advice/deletegroup?groupno='+groupno,
209
+      method:'delete',
210
+  })
211
+}
212
+
213
+
214
+
215
+export function getAllAdviceTemplate(){
216
+  return request({
217
+    url:'/api/advicetemplate/list',
218
+    method:'get',
219
+  })
220
+}
221
+
222
+
223
+export function CreateSingleAdviceTemplate(advices){
224
+  return request({
225
+    url:'/api/advicetemplate/add',
226
+    method:'post',
227
+    params:advices,
228
+
229
+  })
230
+}
231
+export function DeleteParentAdviceTemplate(id){
232
+  return request({
233
+    url:'/api/adviceparenttemplate/delete?template_id='+id,
234
+    method:'delete',
235
+
236
+  })
237
+}
238
+
239
+export function CreateSubAdvice(params){
240
+  return request({
241
+    url:'/api/subadvice/create',
242
+    method:'post',
243
+    params:params,
244
+  })
245
+}
246
+
247
+
248
+export function updateTemplateName(params) {
249
+  return request({
250
+    url: '/api/template/modify',
251
+    method: 'post',
252
+    params: params
253
+  })
254
+}
255
+
256
+
257
+
258
+
259
+
260
+
261
+

+ 41 - 0
src/api/article.js View File

@@ -0,0 +1,41 @@
1
+import request from '@/utils/request'
2
+
3
+export function fetchList(query) {
4
+  return request({
5
+    url: '/article/list',
6
+    method: 'get',
7
+    params: query
8
+  })
9
+}
10
+
11
+export function fetchArticle(id) {
12
+  return request({
13
+    url: '/article/detail',
14
+    method: 'get',
15
+    params: { id }
16
+  })
17
+}
18
+
19
+export function fetchPv(pv) {
20
+  return request({
21
+    url: '/article/pv',
22
+    method: 'get',
23
+    params: { pv }
24
+  })
25
+}
26
+
27
+export function createArticle(data) {
28
+  return request({
29
+    url: '/article/create',
30
+    method: 'post',
31
+    data
32
+  })
33
+}
34
+
35
+export function updateArticle(data) {
36
+  return request({
37
+    url: '/article/update',
38
+    method: 'post',
39
+    data
40
+  })
41
+}

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

@@ -0,0 +1,9 @@
1
+import request from '@/utils/request'
2
+
3
+export function watchList(query) {
4
+  return request({
5
+    url: '/watch/list',
6
+    method: 'get',
7
+    params: query
8
+  })
9
+}

+ 41 - 0
src/api/data.js View File

@@ -0,0 +1,41 @@
1
+import request from '@/utils/request'
2
+
3
+export function createConfig(params) {
4
+  return request({
5
+    url: '/api/createconfig',
6
+    method: 'post',
7
+    data: params
8
+  })
9
+}
10
+
11
+export function createChildConfig(params) {
12
+  return request({
13
+    url: '/api/createchildconfig',
14
+    method: 'post',
15
+    data: params
16
+  })
17
+}
18
+
19
+export function updateChildConfig(params) {
20
+  return request({
21
+    url: '/api/updatechildconfig',
22
+    method: 'post',
23
+    data: params
24
+  })
25
+}
26
+
27
+export function deleteChildConfig(params) {
28
+  return request({
29
+    url: '/api/deletechildconfig',
30
+    method: 'post',
31
+    data: params
32
+  })
33
+}
34
+
35
+export function updateTemplate(params) {
36
+  return request({
37
+    url: '/api/updatetemplate',
38
+    method: 'post',
39
+    data: params
40
+  })
41
+}

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

@@ -0,0 +1,9 @@
1
+import request from '@/utils/request'
2
+
3
+export function getConfigList(params) {
4
+  return request({
5
+    url: '/api/getconfiglist',
6
+    method: 'get',
7
+    data: params
8
+  })
9
+}

+ 192 - 0
src/api/device/device.js View File

@@ -0,0 +1,192 @@
1
+import request from '@/utils/request'
2
+
3
+export function getDeviceInitData() {
4
+    return request({
5
+        url: '/api/device/initdata',
6
+        method: 'get',
7
+    })
8
+}
9
+
10
+export function getDevices(device_type, zone) {
11
+    const params = new Object()
12
+    if (device_type !== undefined) {
13
+        params.type = device_type
14
+    }
15
+    if (zone !== undefined) {
16
+        params.zone = zone
17
+    }
18
+    return request({
19
+        url: '/api/devices',
20
+        method: 'get',
21
+        params: params,
22
+    })
23
+}
24
+
25
+export function getDeviceBaseInfo(id) {
26
+    const params = {
27
+        id: id,
28
+    }
29
+    return request({
30
+        url: '/api/device/baseinfo',
31
+        method: 'get',
32
+        params: params,
33
+    })
34
+}
35
+
36
+// 参数太多,要看着文档来
37
+export function createDevice(params) {
38
+    return request({
39
+        url: '/api/device/create',
40
+        method: 'post',
41
+        params: params,
42
+    })
43
+}
44
+
45
+// 参数太多,要看着文档来
46
+export function modifyDeviceBaseInfo(params) {
47
+    return request({
48
+        url: '/api/device/modify',
49
+        method: 'post',
50
+        params: params,
51
+    })
52
+}
53
+
54
+export function getZones() {
55
+    return request({
56
+        url: '/api/device/zones',
57
+        method: 'get',
58
+    })
59
+}
60
+
61
+export function createZone(name, zone_type) {
62
+    const params = {
63
+        name: name,
64
+        type: zone_type,
65
+    }
66
+    return request({
67
+        url: '/api/device/zone/create',
68
+        method: 'post',
69
+        params: params,
70
+    })
71
+}
72
+
73
+export function modifyZone(id, name, zone_type) {
74
+    const params = {
75
+        id: id,
76
+        name: name,
77
+        type: zone_type,
78
+    }
79
+    return request({
80
+        url: '/api/device/zone/modify',
81
+        method: 'post',
82
+        params: params,
83
+    })
84
+}
85
+
86
+export function getGroups() {
87
+    return request({
88
+        url: '/api/device/groups',
89
+        method: 'get',
90
+    })
91
+}
92
+
93
+export function createGroup(name) {
94
+    const params = {
95
+        name: name,
96
+    }
97
+    return request({
98
+        url: '/api/device/group/create',
99
+        method: 'post',
100
+        params: params,
101
+    })
102
+}
103
+
104
+export function modifyGroup(id, name) {
105
+    const params = {
106
+        id: id,
107
+        name: name,
108
+    }
109
+    return request({
110
+        url: '/api/device/group/modify',
111
+        method: 'post',
112
+        params: params,
113
+    })
114
+}
115
+
116
+export function getDeviceNumbers() {
117
+    return request({
118
+        url: '/api/device/numbers',
119
+        method: 'get',
120
+    })
121
+}
122
+
123
+export function createDeviceNumber(number, zone_id, group_id) {
124
+    const params = {
125
+        number: number,
126
+        zone: zone_id,
127
+        group: group_id,
128
+    }
129
+    return request({
130
+        url: '/api/device/number/create',
131
+        method: 'post',
132
+        params: params,
133
+    })
134
+}
135
+
136
+export function modifyDeviceNumber(id, number, zone_id, group_id) {
137
+    const params = {
138
+        id: id,
139
+        number: number,
140
+        zone: zone_id,
141
+        group: group_id,
142
+    }
143
+    return request({
144
+        url: '/api/device/number/modify',
145
+        method: 'post',
146
+        params: params,
147
+    })
148
+}
149
+
150
+export function disableDevice(id) {
151
+    const params = {
152
+        id: id,
153
+    }
154
+    return request({
155
+        url: '/api/device/disable',
156
+        method: 'post',
157
+        params: params,
158
+    })
159
+}
160
+
161
+export function disableZone(id) {
162
+    const params = {
163
+        id: id,
164
+    }
165
+    return request({
166
+        url: '/api/device/zone/disable',
167
+        method: 'post',
168
+        params: params,
169
+    })
170
+}
171
+
172
+export function disableGroup(id) {
173
+    const params = {
174
+        id: id,
175
+    }
176
+    return request({
177
+        url: '/api/device/group/disable',
178
+        method: 'post',
179
+        params: params,
180
+    })
181
+}
182
+
183
+export function disableDeviceNumber(id) {
184
+    const params = {
185
+        id: id,
186
+    }
187
+    return request({
188
+        url: '/api/device/number/disable',
189
+        method: 'post',
190
+        params: params,
191
+    })
192
+}

+ 247 - 0
src/api/dialysis.js View File

@@ -0,0 +1,247 @@
1
+import request from '@/utils/request'
2
+
3
+
4
+export function fetchList(params){
5
+  return request({
6
+    url:'/api/patients',
7
+    method:'get',
8
+    params:params
9
+  })
10
+}
11
+
12
+
13
+
14
+export function getSchedualPatient(params){
15
+  return request({
16
+    url:'/api/dialysis/patients',
17
+    method:'get',
18
+    params:params
19
+  })
20
+}
21
+
22
+
23
+export function PatientInfo(params){
24
+  return request({
25
+    url:'/api/dialysis/info',
26
+    method:'get',
27
+    params:params
28
+  })
29
+}
30
+
31
+export function doctorAndNurseList(params){
32
+  return request({
33
+    url:'/api/alldoctors',
34
+    method:'get',
35
+    params:params
36
+  })
37
+}
38
+
39
+
40
+export function commitDailysisRecord(params){
41
+  return request({
42
+    url:'/api/dialysis/record',
43
+    method:'post',
44
+    params:params
45
+  })
46
+}
47
+
48
+export function getGobelInfo(params){
49
+  return request({
50
+    url:'/api/dialysis/golbal',
51
+    method:'post',
52
+    params:params
53
+  })
54
+}
55
+
56
+
57
+export function CreateDoctorAdvice(id,dialysisId,record_date,params){
58
+  return request({
59
+    url:'/api/dialysis/advice/create?id='+id+"&dialysis_id="+dialysisId+"&record_date="+record_date,
60
+    method:'post',
61
+    data:params
62
+  })
63
+}
64
+
65
+export function getDoctorAdviceById(params){
66
+  return request({
67
+    url:'/api/dialysis/advice/get',
68
+    method:'get',
69
+    params:params
70
+  })
71
+}
72
+
73
+export function editDoctorAdviceById(params){
74
+  return request({
75
+    url:'/api/dialysis/advice/edit',
76
+    method:'put',
77
+    params:params
78
+  })
79
+}
80
+
81
+
82
+export function CreateMonitor(params){
83
+  return request({
84
+    url:'/api/dialysis/monitor/create',
85
+    method:'post',
86
+    params:params
87
+  })
88
+}
89
+
90
+export function DelMonitor(params){
91
+  return request({
92
+    url:'/api/dialysis/monitor/del',
93
+    method:'post',
94
+    params:params
95
+  })
96
+}
97
+
98
+
99
+export function GetAllZone(params){
100
+  return request({
101
+    url:'/api/dialysis/zone',
102
+    method:'get',
103
+    params:params
104
+  })
105
+}
106
+
107
+
108
+export function PostStartRecordInfo(params){
109
+  return request({
110
+    url:'/api/dialysis/start',
111
+    method:'post',
112
+    params:params
113
+  })
114
+}
115
+
116
+export function GetGlobalInfo(params){
117
+  return request({
118
+    url:'/api/dialysis/device',
119
+    method:'get',
120
+    params:params
121
+  })
122
+}
123
+
124
+export function GetDeviceInfo(params){
125
+  return request({
126
+    url:'/api/dialysis/device',
127
+    method:'get',
128
+    params:params
129
+  })
130
+}
131
+
132
+
133
+export function commitDailysisSolution(params){
134
+  return request({
135
+    url:'/api/dialysis/global',
136
+    method:'get',
137
+    params:params
138
+  })
139
+}
140
+
141
+
142
+export function delMonitor(params){
143
+  return request({
144
+    url:'/api/dialysis/monitor/del',
145
+    method:'post',
146
+    params:params
147
+  })
148
+}
149
+
150
+
151
+export function getDialysisRecord(params) {
152
+  return request({
153
+    url:'/api/dialysis/dialysisorder',
154
+    method:'Get',
155
+    params:params
156
+  })
157
+}
158
+
159
+
160
+
161
+
162
+
163
+export function postPrescription(params) {
164
+  return request({
165
+    url:'/api/dialysis/prescription',
166
+    method:'Post',
167
+    params:params
168
+  })
169
+}
170
+
171
+
172
+
173
+export function postSoulution(params) {
174
+  return request({
175
+    url:'/api/dialysis/soulution',
176
+    method:'Post',
177
+    params:params
178
+  })
179
+}
180
+
181
+
182
+export function postDoubleCheck(params) {
183
+  return request({
184
+    url:'/api/dialysis/dobule',
185
+    method:'Post',
186
+    params:params
187
+  })
188
+}
189
+
190
+
191
+export function postAccepts(params) {
192
+  return request({
193
+    url:'/api/dialysis/accepts',
194
+    method:'Post',
195
+    params:params
196
+  })
197
+}
198
+
199
+
200
+export function postAssessmentBeforeDislysis(params) {
201
+  return request({
202
+    url:'/api/dialysis/assessmentbeforedislysis',
203
+    method:'Post',
204
+    params:params
205
+  })
206
+}
207
+
208
+export function postTreatmentsummary(params) {
209
+  return request({
210
+    url: '/api/dialysis/treatmentsummary',
211
+    method:'Post',
212
+    params:params
213
+  })
214
+}
215
+
216
+
217
+
218
+
219
+export function postAssessmentAfterDislysis(params, data) {
220
+  return request({
221
+    url:'/api/dialysis/assessmentafterdislysis',
222
+    method:'Post',
223
+    params:params,
224
+    data:data
225
+  })
226
+}
227
+
228
+
229
+export function postDelMonitorInfo(params) {
230
+  return request({
231
+    url:'/api/dialysis/monitor/del',
232
+    method:'Post',
233
+    params:params,
234
+    data:data
235
+  })
236
+}
237
+
238
+
239
+
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+

+ 86 - 0
src/api/dialysis_record.js View File

@@ -0,0 +1,86 @@
1
+import request from '@/utils/request'
2
+
3
+export function getDialysisRecordInitData(){
4
+    return request({
5
+        url:'/api/dialysis/initdata',
6
+        method:'get',
7
+    })
8
+}
9
+
10
+export function getDialysisSchedules(ymd){
11
+    var params = {
12
+        date: ymd,
13
+    }
14
+    return request({
15
+        url:'/api/dialysis/schedules',
16
+        method:'get',
17
+        params: params,
18
+    })
19
+}
20
+
21
+export function getDialysisScheduleDetail(patient_id, ymd){
22
+    var params = {
23
+        patient_id: patient_id,
24
+        date: ymd,
25
+    }
26
+    return request({
27
+        url:'/api/dislysis/schedule',
28
+        method:'get',
29
+        params: params,
30
+    })
31
+}
32
+
33
+export function editMonitor(patient_id, schedule_date, data){
34
+    var params = {
35
+        patient_id: patient_id,
36
+        schedule_date: schedule_date,
37
+    }
38
+    return request({
39
+        url:'/api/dislysis/monitor/edit',
40
+        method:'post',
41
+        params: params,
42
+        data: data,
43
+    })
44
+}
45
+
46
+export function startDialysis(patient_id, schedule_date, nurse_id, bed_id) {
47
+    var params = {
48
+        patient_id: patient_id,
49
+        date: schedule_date,
50
+        nurse: nurse_id,
51
+        bed: bed_id,
52
+    }
53
+    return request({
54
+        url:'/api/dialysis/start_record',
55
+        method:'post',
56
+        params: params,
57
+    })
58
+}
59
+
60
+export function finishDialysis(patient_id, schedule_date, nurse_id){
61
+    var params = {
62
+        patient_id: patient_id,
63
+        date: schedule_date,
64
+        nurse: nurse_id,
65
+    }
66
+    return request({
67
+        url:'/api/dialysis/finish',
68
+        method:'post',
69
+        params: params,
70
+    })
71
+}
72
+
73
+
74
+
75
+export function postDelMonitorInfo(params) {
76
+  return request({
77
+    url:'/api/dialysis/monitor/del',
78
+    method:'post',
79
+    params:params,
80
+  })
81
+}
82
+
83
+
84
+
85
+
86
+

+ 14 - 0
src/api/doctor.js View File

@@ -0,0 +1,14 @@
1
+import request from '@/utils/request'
2
+
3
+export function fetchAllDoctorAndNurse(){
4
+    return request({
5
+        url:'/api/alldoctors',
6
+        method:'get',
7
+    })
8
+}
9
+export function fetchAllAdminUsers(){
10
+    return request({
11
+        url:'/api/admin/users',
12
+        method:'get',
13
+    })
14
+}

+ 40 - 0
src/api/inspection.js View File

@@ -0,0 +1,40 @@
1
+import request from '@/utils/request'
2
+
3
+export function fetchInspectionReference(id){
4
+    return request({
5
+        url:'/api/patient/inspection/reference?patient='+id,
6
+        method:'get',
7
+    })
8
+}
9
+
10
+export function CreatePatientInspection(id, data){
11
+    return request({
12
+        url:'/api/patient/inspection/create?patient='+id,
13
+        method:'post',
14
+        data:data,
15
+    })
16
+}
17
+
18
+export function EditPatientInspection(id, data){
19
+    return request({
20
+        url:'/api/patient/inspection/edit?patient='+id,
21
+        method:'put',
22
+        data:data,
23
+    })
24
+}
25
+
26
+export function DeletePatientInspection(params){
27
+    return request({
28
+        url:'/api/patient/inspection/delete',
29
+        method:'delete',
30
+        params:params,
31
+    })
32
+}
33
+
34
+export function fetchPatientInspections(params){
35
+    return request({
36
+        url:'/api/patient/inspection/list',
37
+        method:'get',
38
+        params:params,
39
+    })
40
+}

+ 27 - 0
src/api/invoice.js View File

@@ -0,0 +1,27 @@
1
+import request from '@/utils/request'
2
+
3
+export function GetApplies(orders) {
4
+    return request({
5
+        url: '/api/invoice/applies?orders='+orders,
6
+        method: 'Get',
7
+    })
8
+}
9
+export function ApplyInvoice(orders, invoice) {
10
+    return request({
11
+        url: '/api/invoice/apply?orders='+orders,
12
+        method: 'Post',
13
+        data:invoice,
14
+    })
15
+}
16
+export function GetNoInvOrders() {
17
+    return request({
18
+        url: '/api/invoice/noinvorders',
19
+        method: 'Get',
20
+    })
21
+}
22
+export function GetInvoices() {
23
+    return request({
24
+        url: '/api/invoices',
25
+        method: 'Get',
26
+    })
27
+}

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

@@ -0,0 +1,29 @@
1
+import request from '@/utils/request'
2
+
3
+export function loginByUsername(username, password) {
4
+  const data = {
5
+    username,
6
+    password
7
+  }
8
+  return request({
9
+    url: '/login/login',
10
+    method: 'post',
11
+    data
12
+  })
13
+}
14
+
15
+export function logout() {
16
+  return request({
17
+    url: '/login/logout',
18
+    method: 'post'
19
+  })
20
+}
21
+
22
+export function getUserInfo(token) {
23
+  return request({
24
+    url: '/user/info',
25
+    method: 'get',
26
+    params: { token }
27
+  })
28
+}
29
+

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

@@ -0,0 +1,38 @@
1
+import request from '@/utils/request'
2
+
3
+export function verifyToken(token) {
4
+  return request({
5
+    url: '/api/token/verify',
6
+    method: 'post',
7
+    params: {
8
+      'token': token
9
+    }
10
+  })
11
+}
12
+
13
+export function modifyAdminInfo(params) {
14
+  return request({
15
+    url: '/api/admin/edit_info',
16
+    method: 'post',
17
+    params: params,
18
+  })
19
+}
20
+
21
+export function getModifyPwdCode() {
22
+  return request({
23
+    url: '/api/password/code',
24
+    method: 'post',
25
+  })
26
+}
27
+
28
+export function modifyPassword(new_pwd, code) {
29
+  var params = {
30
+    password: new_pwd,
31
+    code: code,
32
+  }
33
+  return request({
34
+    url: '/api/password/modify',
35
+    method: 'post',
36
+    params: params,
37
+  })
38
+}

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

@@ -0,0 +1,236 @@
1
+import request from '@/utils/request'
2
+
3
+export function fetchList(params){
4
+    return request({
5
+        url:'/api/patients',
6
+        method:'get',
7
+        params:params
8
+    })
9
+}
10
+
11
+export function fetchAllList(){
12
+    return request({
13
+        url:'/api/patients/all',
14
+        method:'get',
15
+    })
16
+}
17
+export function GetPatientTotal(){
18
+    return request({
19
+        url:'/api/patients/total',
20
+        method:'get',
21
+    })
22
+}
23
+
24
+export function generateDialysisNo() {
25
+    return request({
26
+        url:'/api/patients/generatedialysisno',
27
+        method:'get'
28
+    })
29
+}
30
+
31
+export function createPatient(patient) {
32
+    return request({
33
+        url:'/api/patients/create',
34
+        method:'post',
35
+        data:patient,
36
+    })
37
+}
38
+export function editPatient(id,patient) {
39
+    return request({
40
+        url:'/api/patients/edit?id='+id,
41
+        method:'put',
42
+        data:patient,
43
+    })
44
+}
45
+export function fetchPatient(id) {
46
+    return request({
47
+        url:'/api/patients/get?id='+id,
48
+        method:'get',
49
+    })
50
+}
51
+
52
+
53
+export function fetchPatientDialysisSolutions(params){
54
+    return request({
55
+        url:'/api/patients/dialysissolutions',
56
+        method:'Get',
57
+        params:params,
58
+    })
59
+}
60
+
61
+export function createPatientDialysisSolution(id,solution){
62
+    return request({
63
+        url:'/api/patients/dialysissolution/create?patient='+id,
64
+        method:'post',
65
+        data:solution,
66
+    })
67
+}
68
+
69
+export function editPatientDialysisSolution(patient, id,solution){
70
+    return request({
71
+        url:'/api/patients/dialysissolution/edit?patient='+patient + '&id='+id,
72
+        method:'put',
73
+        data:solution,
74
+    })
75
+}
76
+
77
+export function createChildPatientDialysisSolution(id,solution){
78
+    return request({
79
+        url:'/api/patients/dialysissolution/child/create?patient='+id,
80
+        method:'post',
81
+        data:solution,
82
+    })
83
+}
84
+
85
+
86
+export function editChildPatientDialysisSolution(patient, id, solution){
87
+    return request({
88
+        url:'/api/patients/dialysissolution/child/edit?patient='+patient + '&id='+id,
89
+        method:'put',
90
+        data:solution,
91
+    })
92
+}
93
+
94
+export function editDialysisSolutionDetail(patient, id, solution){
95
+    return request({
96
+        url:'/api/patients/dialysissolution/detail/edit?patient='+patient + '&id='+id,
97
+        method:'put',
98
+        data:solution,
99
+    })
100
+}
101
+
102
+
103
+export function deleteDialysisSolution(id){
104
+    return request({
105
+        url:'/api/patients/dialysissolution/delete?id='+id,
106
+        method:'delete',
107
+    })
108
+}
109
+
110
+export function createDryWeight(patient, weight){
111
+    return request({
112
+        url:'/api/patients/dryweight/create?id='+patient,
113
+        method:'post',
114
+        data:weight,
115
+    })
116
+}
117
+
118
+export function getDryWeights(params){
119
+    return request({
120
+        url:'/api/patients/dryweight/get',
121
+        method:'get',
122
+        params:params
123
+    })
124
+}
125
+
126
+export function getPatientDialysisRecords(params) {
127
+    return request({
128
+        url:'/api/patients/dialysisrecords',
129
+        method:'get',
130
+        params:params
131
+    })
132
+}
133
+export function getPatientProEducation(params) {
134
+    return request({
135
+        url:'/api/patients/proeducation',
136
+        method:'get',
137
+        params:params
138
+    })
139
+}
140
+
141
+export function getCourseOfDiseaseRecords(patient_id, start_time_ymd, end_time_ymd) {
142
+    var params = {
143
+        patient_id: patient_id,
144
+        start_time: start_time_ymd,
145
+        end_time: end_time_ymd,
146
+    }
147
+    return request({
148
+        url: '/api/patient/courses',
149
+        method: 'get',
150
+        params: params,
151
+    })
152
+}
153
+
154
+export function createCourseOfDiseaseRecord(patient_id, content) {
155
+    var params = {
156
+        patient_id: patient_id,
157
+        content: content,
158
+    }
159
+    return request({
160
+        url: '/api/patient/course/create',
161
+        method: 'post',
162
+        params: params,
163
+    })
164
+}
165
+
166
+export function getRescueRecords(patient_id, start_time_ymd, end_time_ymd) {
167
+    var params = {
168
+        patient_id: patient_id,
169
+        start_time: start_time_ymd,
170
+        end_time: end_time_ymd,
171
+    }
172
+    return request({
173
+        url: '/api/patient/rescues',
174
+        method: 'get',
175
+        params: params,
176
+    })
177
+}
178
+
179
+export function createRescueRecord(patient_id, content) {
180
+    var params = {
181
+        patient_id: patient_id,
182
+        content: content,
183
+    }
184
+    return request({
185
+        url: '/api/patient/rescue/create',
186
+        method: 'post',
187
+        params: params,
188
+    })
189
+}
190
+
191
+export function deleteCourseOfDiseaseRecords(patient_id, ids_str) {
192
+    var params = {
193
+        patient_id: patient_id,
194
+        ids: ids_str,
195
+    }
196
+    return request({
197
+        url: '/api/patient/course/delete',
198
+        method: 'post',
199
+        params: params,
200
+    })
201
+}
202
+
203
+export function deleteRescueRecords(patient_id, ids_str) {
204
+    var params = {
205
+        patient_id: patient_id,
206
+        ids: ids_str,
207
+    }
208
+    return request({
209
+        url: '/api/patient/rescue/delete',
210
+        method: 'post',
211
+        params: params,
212
+    })
213
+}
214
+
215
+export function EditLapseto(patient_id, data) {
216
+    return request({
217
+        url: '/api/patients/lapseto/edit?id='+patient_id,
218
+        method: 'post',
219
+        data: data,
220
+    })
221
+    
222
+}
223
+
224
+
225
+
226
+
227
+
228
+export function PostSearch(keyword) {
229
+  return request({
230
+    url: '/api/patients/search?keyword='+keyword,
231
+    method: 'post',
232
+
233
+  })
234
+
235
+}
236
+

+ 11 - 0
src/api/print_data.js View File

@@ -0,0 +1,11 @@
1
+import request from "@/utils/request"
2
+
3
+export function GetBatchPrintDialysisData(sch_ids){
4
+    return request({
5
+        url: '/api/print/schedule/dialysis',
6
+        method: 'get',
7
+        params: {
8
+            ids: sch_ids,
9
+        },
10
+    })
11
+}

+ 8 - 0
src/api/public.js View File

@@ -0,0 +1,8 @@
1
+import request from '@/utils/request'
2
+
3
+export function GetServerTime(){
4
+    return request({
5
+        url:'/api/public/servertime',
6
+        method:'get',
7
+    })
8
+}

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

@@ -0,0 +1,8 @@
1
+import request from '@/utils/request'
2
+
3
+export function getToken() {
4
+  return request({
5
+    url: '/api/qiniu/uptoken', // 假地址 自行替换
6
+    method: 'get'
7
+  })
8
+}

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

@@ -0,0 +1,9 @@
1
+import request from '@/utils/request'
2
+
3
+export function userSearch(name) {
4
+  return request({
5
+    url: '/search/user',
6
+    method: 'get',
7
+    params: { name }
8
+  })
9
+}

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

@@ -0,0 +1,99 @@
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
+}
82
+
83
+export function getSpecialPermissionInitData() {
84
+    return request({
85
+        url: '/api/admin/specialpermission/initdata',
86
+        method: 'get',
87
+    })
88
+}
89
+
90
+export function submitDialysisRecordPermissionUsers(ids_str) {
91
+    const params = {
92
+        ids: ids_str,
93
+    }
94
+    return request({
95
+        url: '/api/admin/specialpermission/dialysisrecord/submit',
96
+        method: 'post',
97
+        params: params,
98
+    })
99
+}

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

@@ -0,0 +1,72 @@
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
+}

+ 61 - 0
src/api/schedule.js View File

@@ -0,0 +1,61 @@
1
+import request from '@/utils/request'
2
+
3
+export function getWeekPanels(t){
4
+    return request({
5
+        url:'/api/schedule/weekpanel?data='+t,
6
+        method:'get',
7
+    })
8
+}
9
+
10
+export function getSchedules(week){
11
+    return request({
12
+        url:'/api/schedule/schedules?weekTime=' + week,
13
+        method:'get',
14
+    })
15
+}
16
+
17
+export function getSchedulePatients(params){
18
+    return request({
19
+        url:'/api/schedule/patients',
20
+        method:'get',
21
+        params:params,
22
+    })
23
+}
24
+
25
+export function CreateSchedule(id, schedule){
26
+    return request({
27
+        url:'/api/schedule/create?patient_id='+id,
28
+        method:'Post',
29
+        data:schedule,
30
+    })
31
+}
32
+
33
+export function CancelSchedule(id) {
34
+    return request({
35
+        url:'/api/schedule/delete?id='+id,
36
+        method:"Delete",
37
+    });
38
+}
39
+
40
+export function ChangeSchedule(id, schedule){
41
+    return request({
42
+        url:'/api/schedule/change?id='+id,
43
+        method:'Put',
44
+        data:schedule,
45
+    })
46
+}
47
+
48
+export function GetPatientSchedules(id) {
49
+    return request({
50
+        url:'/api/patients/schedules?id='+id,
51
+        method:'Get',
52
+    })
53
+}
54
+
55
+export function GetWeekSchedulePrintInitData(date) {
56
+    return request({
57
+        url: '/api/schedule/print/initdata',
58
+        method: 'get',
59
+        params: { date: date },
60
+    })
61
+}

+ 33 - 0
src/api/schedule_template/patient.js View File

@@ -0,0 +1,33 @@
1
+import request from '@/utils/request'
2
+
3
+export function getTemplateInitData() {
4
+  return request({
5
+    url: '/api/schtemp/p/initdata',
6
+    method: 'get',
7
+  })
8
+}
9
+
10
+export function setTemplateMode(mode) {
11
+  var params = {
12
+    mode: mode,
13
+  }
14
+  return request({
15
+    url: '/api/schtemp/p/setmode',
16
+    method: 'post',
17
+    params: params,
18
+  })
19
+}
20
+
21
+export function updateSchedules(template_id, add_schs, del_schs, change_schs) {
22
+  var params = {
23
+    template_id: template_id,
24
+    add_schs: add_schs,
25
+    del_schs: del_schs,
26
+    change_schs: change_schs,
27
+  }
28
+  return request({
29
+    url: '/api/schtemp/p/update_sch',
30
+    method: 'post',
31
+    params: params,
32
+  })
33
+}

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

@@ -0,0 +1,84 @@
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
+}

+ 26 - 0
src/api/signandweigh.js View File

@@ -0,0 +1,26 @@
1
+import request from '@/utils/request';
2
+
3
+export function fetchSignPatients(params){
4
+    return request({
5
+        url:'/api/sign/patients',
6
+        method:'get',
7
+        params:params,
8
+    })
9
+}
10
+
11
+export function getPatientSign(params){
12
+    return request({
13
+        url:'/api/sign/patientsign',
14
+        method:'get',
15
+        params:params,
16
+    })
17
+}
18
+
19
+export function SignWeigh(params, data) {
20
+    return request({
21
+        url:'/api/signweign',
22
+        params: params,
23
+        data: data,
24
+        method:"Post",
25
+    })
26
+}

+ 8 - 0
src/api/statistics.js View File

@@ -0,0 +1,8 @@
1
+import request from '@/utils/request'
2
+
3
+export function fetchStatistics(){
4
+    return request({
5
+        url:'/api/statistisc/index',
6
+        method:'get',
7
+      })
8
+}

+ 496 - 0
src/api/stock.js View File

@@ -0,0 +1,496 @@
1
+import request from '@/utils/request'
2
+
3
+
4
+export function createDealer(params){
5
+  return request({
6
+    url:'/api/stock/dealer/create',
7
+    method:'post',
8
+    params:params
9
+  })
10
+}
11
+
12
+
13
+export function modifyDealer(params){
14
+  return request({
15
+    url:'/api/stock/dealer/modify',
16
+    method:'post',
17
+    params:params
18
+  })
19
+}
20
+
21
+
22
+
23
+export function getDealersList(params){
24
+  return request({
25
+    url:'/api/stock/dealer/list',
26
+    method:'get',
27
+    params:params
28
+  })
29
+}
30
+
31
+
32
+export function deleteDealer(params){
33
+  return request({
34
+    url:'/api/stock/dealer/delete',
35
+    method:'post',
36
+    params:params
37
+  })
38
+}
39
+
40
+
41
+
42
+export function GetDealer(params){
43
+  return request({
44
+    url:'/api/stock/dealer/get',
45
+    method:'get',
46
+    params:params
47
+  })
48
+}
49
+
50
+
51
+
52
+
53
+
54
+export function createManufacturer(params){
55
+  return request({
56
+    url:'/api/stock/manufacturer/create',
57
+    method:'post',
58
+    params:params
59
+  })
60
+}
61
+
62
+
63
+export function modifyManufacturer(params){
64
+  return request({
65
+    url:'/api/stock/manufacturer/modify',
66
+    method:'post',
67
+    params:params
68
+  })
69
+}
70
+
71
+
72
+
73
+export function getManufacturerList(params){
74
+  return request({
75
+    url:'/api/stock/manufacturer/list',
76
+    method:'get',
77
+    params:params
78
+  })
79
+}
80
+
81
+
82
+export function deleteManufacturer(params){
83
+  return request({
84
+    url:'/api/stock/manufacturer/delete',
85
+    method:'post',
86
+    params:params
87
+  })
88
+}
89
+
90
+
91
+
92
+export function GetManufacturer(params){
93
+  return request({
94
+    url:'/api/stock/manufacturer/get',
95
+    method:'get',
96
+    params:params
97
+  })
98
+}
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+export function createGoodType(params){
110
+  return request({
111
+    url:'/api/stock/good/type/create',
112
+    method:'post',
113
+    params:params
114
+  })
115
+}
116
+
117
+
118
+export function modifyGoodType(params){
119
+  return request({
120
+    url:'/api/stock/good/type/modify',
121
+    method:'post',
122
+    params:params
123
+  })
124
+}
125
+
126
+
127
+
128
+export function getGoodTypeList(params){
129
+  return request({
130
+    url:'/api/stock/good/type/list',
131
+    method:'get',
132
+    params:params
133
+  })
134
+}
135
+
136
+
137
+export function deleteGoodType(params){
138
+  return request({
139
+    url:'/api/type/delete',
140
+    method:'post',
141
+    params:params
142
+  })
143
+}
144
+
145
+
146
+
147
+export function GetGoodType(params){
148
+  return request({
149
+    url:'/api/stock/good/type/get',
150
+    method:'get',
151
+    params:params
152
+  })
153
+}
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+export function createGoodInfo(params){
164
+  return request({
165
+    url:'/api/stock/good/info/create',
166
+    method:'post',
167
+    params:params
168
+  })
169
+}
170
+
171
+
172
+export function modifyGoodInfo(params){
173
+  return request({
174
+    url:'/api/stock/good/info/modify',
175
+    method:'post',
176
+    params:params
177
+  })
178
+}
179
+
180
+
181
+
182
+export function getGoodInfoList(params){
183
+  return request({
184
+    url:'/api/stock/good/info/list',
185
+    method:'get',
186
+    params:params
187
+  })
188
+}
189
+
190
+
191
+export function deleteGoodInfo(params){
192
+  return request({
193
+    url:'/api/info/delete',
194
+    method:'post',
195
+    params:params
196
+  })
197
+}
198
+
199
+
200
+
201
+export function GetGoodInfoByGoodId(params){
202
+  return request({
203
+    url:'/api/stock/good/info/get',
204
+    method:'get',
205
+    params:params
206
+  })
207
+}
208
+
209
+export function GetGoodInfo(params){
210
+  return request({
211
+    url:'/api/stock/good/info',
212
+    method:'get',
213
+    params:params
214
+  })
215
+}
216
+
217
+
218
+
219
+export function GetAllDeals(params){
220
+  return request({
221
+    url:'/api/stock/dealer/all',
222
+    method:'get',
223
+    params:params
224
+  })
225
+}
226
+
227
+
228
+export function GetAllManufacturer(params){
229
+  return request({
230
+    url:'/api/stock/manufacturer/all',
231
+    method:'get',
232
+    params:params
233
+  })
234
+}
235
+
236
+
237
+export function GetAllGoodType(params){
238
+  return request({
239
+    url:'/api/stock/good/type/all',
240
+    method:'get',
241
+    params:params
242
+  })
243
+}
244
+
245
+
246
+export function GetAllGoodInfo(params){
247
+  return request({
248
+    url:'/api/stock/good/info/all',
249
+    method:'get',
250
+    params:params
251
+  })
252
+}
253
+
254
+export function postWarehouse(params,warehousing_time,warehousing_order){
255
+  return request({
256
+    url:'/api/stock/warehouse/create?warehousing_time='+warehousing_time+"&warehousing_order="+warehousing_order,
257
+    method:'post',
258
+    data:params
259
+  })
260
+}
261
+
262
+
263
+export function getWarehouseList(params){
264
+  return request({
265
+    url:'/api/stock/warehouse/list',
266
+    method:'get',
267
+    params:params
268
+  })
269
+}
270
+
271
+export function getWarehouseInfoList(params){
272
+  return request({
273
+    url:'/api/stock/warehouseinfo/list',
274
+    method:'get',
275
+    params:params
276
+  })
277
+}
278
+
279
+
280
+export function postSalesReturn(params,salesReturnTime,salesReturnTotal,ids,orderNumber){
281
+  return request({
282
+    url:'/api/warehouse/return?time='+salesReturnTime+"&total="+salesReturnTotal+"&ids="+ids+"&order_number="+orderNumber,
283
+    method:'post',
284
+    data:params
285
+  })
286
+}
287
+
288
+export function getWarehouseInfo(params){
289
+  return request({
290
+    url:'/api/info/get',
291
+    method:'get',
292
+    params:params
293
+  })
294
+}
295
+
296
+
297
+
298
+export function getSalesReturnList(params){
299
+  return request({
300
+    url:'/api/return/list',
301
+    method:'get',
302
+    params:params
303
+  })
304
+}
305
+
306
+
307
+export function getSalesReturnInfoList(params){
308
+  return request({
309
+    url:'/api/return/info',
310
+    method:'get',
311
+    params:params
312
+  })
313
+}
314
+
315
+export function getAllWarehouseInfo(params){
316
+  return request({
317
+    url:'/api/warehouseinfo',
318
+    method:'get',
319
+    params:params
320
+  })
321
+}
322
+
323
+
324
+
325
+
326
+
327
+
328
+export function getWarehouseOutList(params){
329
+  return request({
330
+    url:'/api/stock/out/list',
331
+    method:'get',
332
+    params:params
333
+  })
334
+}
335
+
336
+export function getWarehouseOutInfoList(params){
337
+  return request({
338
+    url:'/api/stock/out/info',
339
+    method:'get',
340
+    params:params
341
+  })
342
+}
343
+
344
+
345
+export function postWarehouseOut(params,warehousing_time,warehousing_out_order){
346
+  return request({
347
+    url:'/api/stock/out/create?warehousing_out_time='+warehousing_time+"&warehousing_out_order="+warehousing_out_order,
348
+    method:'post',
349
+    data:params
350
+  })
351
+}
352
+
353
+
354
+export function getWarehouseInfoCountByGoodId(params){
355
+  return request({
356
+    url:'/api/info/count',
357
+    method:'get',
358
+    params:params
359
+  })
360
+}
361
+
362
+export function getWarehouseInfoByGoodTypeId(params){
363
+  return request({
364
+    url:'/api/warehouse/type',
365
+    method:'get',
366
+    params:params
367
+  })
368
+}
369
+
370
+export function getWarehouseOutInfo(params){
371
+  return request({
372
+    url:'/api/out/info',
373
+    method:'get',
374
+    params:params
375
+  })
376
+}
377
+
378
+
379
+export function postCancelStock(params,cancelStockTime,cancelStockTotal,ids,orderNumber){
380
+  return request({
381
+    url:'/api/stock/cancel?time='+cancelStockTime+"&total="+cancelStockTotal+"&ids="+ids+"&order_number="+orderNumber,
382
+    method:'post',
383
+    data:params
384
+  })
385
+}
386
+
387
+
388
+
389
+export function getCancelStockList(params){
390
+  return request({
391
+    url:'/api/cancel/list',
392
+    method:'get',
393
+    params:params
394
+  })
395
+}
396
+
397
+export function getCancelStockInfoList(params){
398
+  return request({
399
+    url:'/api/cancel/info',
400
+    method:'get',
401
+    params:params
402
+  })
403
+}
404
+
405
+
406
+export function getAllStockOutList(params){
407
+  return request({
408
+    url:'/api/out/list',
409
+    method:'get',
410
+    params:params
411
+  })
412
+}
413
+
414
+
415
+
416
+
417
+export function getAllStockQueryList(params){
418
+  return request({
419
+    url:'/api/stock/query',
420
+    method:'get',
421
+    params:params
422
+  })
423
+}
424
+
425
+
426
+export function getWarehouseInfoByOrdeNumber(params){
427
+  return request({
428
+    url:'/api/stock/warehouse/get',
429
+    method:'get',
430
+    params:params
431
+  })
432
+}
433
+
434
+
435
+export function modifyWarehouseInfo(params){
436
+  return request({
437
+    url:'/api/stock/warehouse/edit',
438
+    method:'post',
439
+    params:params
440
+  })
441
+}
442
+
443
+
444
+export function deleteWarehouseInfo(params){
445
+  return request({
446
+    url:'/api/stock/warehouse/delete',
447
+    method:'post',
448
+    params:params
449
+  })
450
+}
451
+
452
+
453
+export function getWarehouseOutInfoByOrdeNumber(params){
454
+  return request({
455
+    url:'/api/stock/out/get',
456
+    method:'get',
457
+    params:params
458
+  })
459
+}
460
+
461
+export function modifyWarehouseOutInfo(params){
462
+  return request({
463
+    url:'/api/stock/out/edit',
464
+    method:'post',
465
+    params:params
466
+  })
467
+}
468
+
469
+
470
+export function deleteWarehouseOutInfo(params){
471
+  return request({
472
+    url:'/api/stock/out/delete',
473
+    method:'post',
474
+    params:params
475
+  })
476
+}
477
+
478
+
479
+export function deleteStockInRecord(params){
480
+  return request({
481
+    url:'/api/warehouse/delete',
482
+    method:'post',
483
+    params:params
484
+  })
485
+}
486
+
487
+
488
+
489
+
490
+
491
+
492
+
493
+
494
+
495
+
496
+

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

@@ -0,0 +1,9 @@
1
+import request from '@/utils/request'
2
+
3
+export function fetchList(query) {
4
+  return request({
5
+    url: '/transaction/list',
6
+    method: 'get',
7
+    params: query
8
+  })
9
+}

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

@@ -0,0 +1,199 @@
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

@@ -0,0 +1,3 @@
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


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

@@ -0,0 +1,370 @@
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

@@ -0,0 +1,52 @@
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

@@ -0,0 +1,79 @@
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

@@ -0,0 +1,90 @@
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

@@ -0,0 +1,21 @@
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

@@ -0,0 +1 @@
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

@@ -0,0 +1,32 @@
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

@@ -0,0 +1,370 @@
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

@@ -0,0 +1,544 @@
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

@@ -0,0 +1,743 @@
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

@@ -0,0 +1,582 @@
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/img/data.jpg View File


BIN
src/assets/img/jin_blog.png View File


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


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


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


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


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


+ 0 - 0
src/assets/record/5.png View File


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