xtz 4 سال پیش
کامیت
890497234b
55فایلهای تغییر یافته به همراه24518 افزوده شده و 0 حذف شده
  1. 9 0
      answer/.env.development
  2. 9 0
      answer/.env.production
  3. 9 0
      answer/.env.test
  4. 21 0
      answer/.gitignore
  5. 49 0
      answer/README.md
  6. 10 0
      answer/babel.config.js
  7. 13299 0
      answer/package-lock.json
  8. 57 0
      answer/package.json
  9. BIN
      answer/public/img/bar-chart-grouped-line.png
  10. BIN
      answer/public/img/company-active.png
  11. BIN
      answer/public/img/company.png
  12. BIN
      answer/public/img/home-active.png
  13. BIN
      answer/public/img/home.png
  14. BIN
      answer/public/img/line-chart-line.png
  15. BIN
      answer/public/img/logo.png
  16. BIN
      answer/public/img/logo1.png
  17. BIN
      answer/public/img/logo2.png
  18. BIN
      answer/public/img/logo3.png
  19. BIN
      answer/public/img/logo4.png
  20. BIN
      answer/public/img/people-active.png
  21. BIN
      answer/public/img/people.png
  22. BIN
      answer/public/img/pie-chart-line.png
  23. BIN
      answer/public/img/setting-active.png
  24. BIN
      answer/public/img/setting.png
  25. 28 0
      answer/public/index.html
  26. BIN
      answer/public/static/favicon.ico
  27. BIN
      answer/public/static/loginBG.png
  28. BIN
      answer/public/static/logo.ico
  29. BIN
      answer/public/static/logo.png
  30. 21 0
      answer/src/App.vue
  31. 5 0
      answer/src/common/addr.js
  32. 17 0
      answer/src/common/api/api.js
  33. 153 0
      answer/src/common/api/axios.js
  34. 12 0
      answer/src/common/api/port.js
  35. 539 0
      answer/src/common/font/demo.css
  36. 745 0
      answer/src/common/font/demo_index.html
  37. 117 0
      answer/src/common/font/iconfont.css
  38. BIN
      answer/src/common/font/iconfont.eot
  39. 1 0
      answer/src/common/font/iconfont.js
  40. 184 0
      answer/src/common/font/iconfont.json
  41. 101 0
      answer/src/common/font/iconfont.svg
  42. BIN
      answer/src/common/font/iconfont.ttf
  43. BIN
      answer/src/common/font/iconfont.woff
  44. BIN
      answer/src/common/font/iconfont.woff2
  45. BIN
      answer/src/common/font/pingFang.ttf
  46. 21 0
      answer/src/common/utils/cookiesDeploy.js
  47. 44 0
      answer/src/common/utils/utils.js
  48. 42 0
      answer/src/main.js
  49. 40 0
      answer/src/router/index.js
  50. 21 0
      answer/src/store/index.js
  51. 13 0
      answer/src/views/error.vue
  52. 11 0
      answer/src/views/index.vue
  53. 18 0
      answer/src/views/login.vue
  54. 18 0
      answer/vue.config.js
  55. 8904 0
      answer/yarn.lock

+ 9 - 0
answer/.env.development

@@ -0,0 +1,9 @@
+// 本地环境
+module.exports={
+  NODE_ENV = development
+  VUE_APP_API = https://api.yc1min.com
+  VUE_APP_IMG = https://cdn.yc1min.com
+  VUE_APP_VER = 0.0.1
+  VUE_APP_DAT = new Date().getTime()
+  VUE_APP_DOMAIN = 127.0.0.1
+}

+ 9 - 0
answer/.env.production

@@ -0,0 +1,9 @@
+// 生产环境
+module.exports={
+  NODE_ENV = production
+  VUE_APP_API = https://api.yc1min.com
+  VUE_APP_IMG = https://cdn.yc1min.com
+  VUE_APP_VER = 0.0.1
+  VUE_APP_DAT = new Date().getTime()
+  VUE_APP_DOMAIN = info666.com
+}

+ 9 - 0
answer/.env.test

@@ -0,0 +1,9 @@
+// 测试环境
+module.exports={
+  NODE_ENV = test
+  VUE_APP_API = http://47.100.59.52:7785
+  VUE_APP_IMG = http://cdn.info666.com
+  VUE_APP_VER = 0.0.1
+  VUE_APP_DAT = new Date().getTime()
+  VUE_APP_DOMAIN = info666.com
+}

+ 21 - 0
answer/.gitignore

@@ -0,0 +1,21 @@
+.DS_Store
+node_modules
+/dist
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?

+ 49 - 0
answer/README.md

@@ -0,0 +1,49 @@
+<!--
+ * @Author       : yuanrunwei
+ * @Date         : 2020-05-18 12:05:37
+ * @LastEditors: XuTongZhang
+ * @LastEditTime: 2020-07-29 10:28:37
+ * @FilePath     : \ambre-admin-noob\README.md
+--> 
+# 
+
+```
+install:yarn install
+```
+```
+dev:yarn serve
+```
+```
+build:yarn test/build
+```
+
+#version
+
+# ⭐AMBRE⭐
+
+## v-input:顶部搜索栏
+
+### 组件引用
+
+```
+<v-input
+:list="list"              // 组件内功能项列表
+@search="search">         // 查询方法
+</v-input>
+```
+
+### 参数说明
+
+```
+{
+  placeholder: '',        //
+  type: 'select',         //
+  props: 'test',          //
+  options: [              //
+    {
+      label: '第一项',
+      value: '1'
+    }
+  ]
+}
+```

+ 10 - 0
answer/babel.config.js

@@ -0,0 +1,10 @@
+module.exports = {
+  'presets': [
+    [
+      '@babel/preset-env',
+      {
+        'useBuiltIns': 'entry'
+      }
+    ]
+  ]
+}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 13299 - 0
answer/package-lock.json


+ 57 - 0
answer/package.json

@@ -0,0 +1,57 @@
+{
+  "name": "vuecli3",
+  "version": "0.1.0",
+  "private": true,
+  "scripts": {
+    "serve": "vue-cli-service serve",
+    "build": "vue-cli-service build --mode production",
+    "test": "vue-cli-service build --mode test",
+    "lint": "vue-cli-service lint"
+  },
+  "dependencies": {
+    "axios": "^0.19.0",
+    "babel-polyfill": "^6.26.0",
+    "core-js": "^3.4.3",
+    "css-vars-ponyfill": "^2.3.2",
+    "element-ui": "^2.13.2",
+    "js-cookie": "^2.2.1",
+    "js-cookies": "^1.0.4",
+    "vue": "^2.6.10",
+    "vue-cropper": "^0.5.2",
+    "vue-router": "^3.1.3",
+    "vuex": "^3.1.2"
+  },
+  "devDependencies": {
+    "@vue/cli-plugin-babel": "^4.1.0",
+    "@vue/cli-plugin-eslint": "^4.1.0",
+    "@vue/cli-plugin-router": "^4.1.0",
+    "@vue/cli-plugin-vuex": "^4.1.0",
+    "@vue/cli-service": "^4.1.0",
+    "@vue/eslint-config-standard": "^4.0.0",
+    "babel-eslint": "^10.0.3",
+    "eslint": "^5.16.0",
+    "eslint-plugin-vue": "^5.0.0",
+    "node-sass": "^4.12.0",
+    "sass-loader": "^8.0.0",
+    "vue-template-compiler": "^2.6.10"
+  },
+  "eslintConfig": {
+    "root": true,
+    "env": {
+      "node": true
+    },
+    "extends": [
+      "plugin:vue/essential",
+      "@vue/standard"
+    ],
+    "rules": {},
+    "parserOptions": {
+      "parser": "babel-eslint"
+    }
+  },
+  "browserslist": [
+    "> 1%",
+    "last 2 versions",
+    "not ie < 11"
+  ]
+}

BIN
answer/public/img/bar-chart-grouped-line.png


BIN
answer/public/img/company-active.png


BIN
answer/public/img/company.png


BIN
answer/public/img/home-active.png


BIN
answer/public/img/home.png


BIN
answer/public/img/line-chart-line.png


BIN
answer/public/img/logo.png


BIN
answer/public/img/logo1.png


BIN
answer/public/img/logo2.png


BIN
answer/public/img/logo3.png


BIN
answer/public/img/logo4.png


BIN
answer/public/img/people-active.png


BIN
answer/public/img/people.png


BIN
answer/public/img/pie-chart-line.png


BIN
answer/public/img/setting-active.png


BIN
answer/public/img/setting.png


+ 28 - 0
answer/public/index.html

@@ -0,0 +1,28 @@
+<!--
+ * @Description: create
+ * @Version: 1.0
+ * @Autor: XuTongZhang
+ * @Date: 2020-06-09 15:30:15
+ * @LastEditors: XuTongZhang
+ * @LastEditTime: 2020-08-03 11:07:45
+--> 
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta name="referrer" content="no-referrer" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width,initial-scale=1.0">
+    <link rel="icon" href="<%= BASE_URL %>static/logo.ico">
+    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Sans+SC:100,300,400,500,600,700,900">
+    <script src = "https://cdn.jsdelivr.net/npm/proxy-polyfill@0.3.0/proxy.min.js"></script>
+    <title>知识竞赛</title>
+  </head>
+  <body>
+    <noscript>
+      <strong>We're sorry but vuecli3 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
+    </noscript>
+    <div id="app"></div>
+    <!-- built files will be auto injected -->
+  </body>
+</html>

BIN
answer/public/static/favicon.ico


BIN
answer/public/static/loginBG.png


BIN
answer/public/static/logo.ico


BIN
answer/public/static/logo.png


+ 21 - 0
answer/src/App.vue

@@ -0,0 +1,21 @@
+<!--
+ * @Description: create
+ * @Version: 1.0
+ * @Autor: XuTongZhang
+ * @Date: 2020-06-09 15:30:15
+ * @LastEditors: XuTongZhang
+ * @LastEditTime: 2020-08-17 17:16:42
+-->
+<template>
+<div class="appPage">
+    <router-view />
+</div>
+</template>
+
+<script>
+
+</script>
+
+<style lang="scss" scoped>
+
+</style>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 5 - 0
answer/src/common/addr.js


+ 17 - 0
answer/src/common/api/api.js

@@ -0,0 +1,17 @@
+/*
+ * @Author       : yuanrunwei
+ * @Date         : 2020-05-18 12:05:37
+ * @LastEditors  : yuanrunwei
+ * @LastEditTime : 2020-06-14 16:09:38
+ * @FilePath     : \batterycloud-admin\src\common\api\api.js
+ */
+import axios from './axios'
+export default {
+  post (api, data) {
+    return axios.post(api, data)
+  },
+  get (api) {
+    return axios.get(api)
+  }
+
+}

+ 153 - 0
answer/src/common/api/axios.js

@@ -0,0 +1,153 @@
+/*
+ * @Author       : yuanrunwei
+ * @Date         : 2020-05-18 12:05:37
+ * @LastEditors: XuTongZhang
+ * @LastEditTime: 2020-08-12 11:55:58
+ * @FilePath     : \batterycloud-admin\src\common\api\axios.js
+ */
+import axios from 'axios'
+import vue from '../../main'
+import { Message, Loading } from 'element-ui'
+// import { all } from 'core-js/fn/promise'
+let api = ''
+let loading
+const whiteList = ['test', 'production']
+const allowList = [ // 文件请求路径数组
+  '/export/export2Web'
+]
+const fileUpload = ['/upload/uploadImg']
+
+const service = axios.create({
+  baseURL: process.env.VUE_APP_API + '/admin',
+  // baseURL: 'http://47.100.59.52:7785',
+  timeout: 90000
+})
+
+service.interceptors.request.use(
+  config => {
+    console.log(config.url)
+    if (!fileUpload.includes(config.url)) {
+      let data = {
+        'from': 0,
+        'page': 1,
+        'rows': 10,
+        'companyId': localStorage.getItem('managerid') - 0,
+        'sidx': '',
+        'sord': '',
+        'token': localStorage.getItem('token'),
+        'reqdata': {}
+      }
+      config.data = Object.assign(data, config.data)
+    }
+    loading = Loading.service({
+      lock: true,
+      text: 'Loading',
+      spinner: 'el-icon-loading',
+      background: 'rgba(0, 0, 0, 0.7)'
+    })
+    if (allowList.includes(config.url)) {
+      // config.headers['Content-Type'] = 'application/vnd.ms-excel'
+      // console.log(config)
+      config.responseType = 'blob'
+    }
+    if (config.url === '/addr/all_addr') {
+      config.baseURL = process.env.VUE_APP_API
+    }
+    console.log(config)
+
+    config.headers['Authorization'] = localStorage.getItem('token')
+    api = config.url
+    return config
+  },
+  error => {
+    Promise.reject(error)
+  }
+)
+
+service.interceptors.response.use(
+  res => {
+    console.log(res)
+    let a = false
+    return new Promise((resolve, reject) => {
+      allowList.forEach(item => {
+        console.log(res.config.url)
+        if (res.config.url.includes(item)) {
+          // resolve(res.data)
+          const content = res.data
+          const blob = new Blob([content])
+          console.log(blob)
+          const fileName = '人才库.xls'
+          if ('download' in document.createElement('a')) { // 非IE下载
+            const elink = document.createElement('a')
+            elink.download = fileName
+            elink.style.display = 'none'
+            elink.href = URL.createObjectURL(blob)
+            document.body.appendChild(elink)
+            elink.click()
+            URL.revokeObjectURL(elink.href) // 释放URL 对象
+            document.body.removeChild(elink)
+          } else { // IE10+下载
+            navigator.msSaveBlob(blob, fileName)
+          }
+          a = true
+        }
+      })
+      if (a) {
+        loading.close()
+        return
+      }
+      if (res.data.state === 206) {
+        localStorage.clear()
+        // sessionStorage.claer()
+        vue.$cookies.removeCookies()
+        loading.close()
+        setTimeout(() => {
+          location.reload()
+        }, 100)
+      }
+      if (fileUpload.indexOf(api) !== -1) {
+        loading.close()
+        resolve(res.data)
+      } else if (res.status === 200) {
+        if (res.data.state !== 100) {
+          Message({
+            message: res.data.msg,
+            type: 'error',
+            duration: 5 * 1000
+          })
+          loading.close()
+          reject(res.data.msg)
+        } else {
+          resolve(res.data)
+          loading.close()
+        }
+      } else {
+        loading.close()
+        Message({
+          message: res.statusText,
+          type: 'error',
+          duration: 5 * 1000
+        })
+        if (res.status > 100 && res.status < 200) {
+          if (whiteList.indexOf(process.env.NODE_ENV) !== -1) {
+            let url = `http://monitor.info666.com/monitor/alert?projectAbbr=batterycloud-test&errorMsg=接口:${api}(${res.statusText})&logPath=前端开发环境(${process.env.NODE_ENV})`
+            axios.get(url)
+            loading.close()
+          }
+        }
+        loading.close()
+        reject(res)
+      }
+      // }
+    })
+  },
+  error => {
+    loading.close()
+    Message({
+      message: '请求异常' + error,
+      type: 'error',
+      duration: 5 * 1000
+    })
+  }
+)
+export default service

+ 12 - 0
answer/src/common/api/port.js

@@ -0,0 +1,12 @@
+/*
+ * @Description: create
+ * @Version: 1.0
+ * @Autor: XuTongZhang
+ * @Date: 2020-07-28 14:22:47
+ * @LastEditors: XuTongZhang
+ * @LastEditTime: 2020-07-28 14:34:52
+ */
+
+export default {
+  websiteHomePage: '/website/home/websiteHomePage' // 首页
+}

+ 539 - 0
answer/src/common/font/demo.css

@@ -0,0 +1,539 @@
+/* Logo 字体 */
+@font-face {
+  font-family: "iconfont logo";
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
+}
+
+.logo {
+  font-family: "iconfont logo";
+  font-size: 160px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+/* tabs */
+.nav-tabs {
+  position: relative;
+}
+
+.nav-tabs .nav-more {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  height: 42px;
+  line-height: 42px;
+  color: #666;
+}
+
+#tabs {
+  border-bottom: 1px solid #eee;
+}
+
+#tabs li {
+  cursor: pointer;
+  width: 100px;
+  height: 40px;
+  line-height: 40px;
+  text-align: center;
+  font-size: 16px;
+  border-bottom: 2px solid transparent;
+  position: relative;
+  z-index: 1;
+  margin-bottom: -1px;
+  color: #666;
+}
+
+
+#tabs .active {
+  border-bottom-color: #f00;
+  color: #222;
+}
+
+.tab-container .content {
+  display: none;
+}
+
+/* 页面布局 */
+.main {
+  padding: 30px 100px;
+  width: 960px;
+  margin: 0 auto;
+}
+
+.main .logo {
+  color: #333;
+  text-align: left;
+  margin-bottom: 30px;
+  line-height: 1;
+  height: 110px;
+  margin-top: -50px;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.main .logo a {
+  font-size: 160px;
+  color: #333;
+}
+
+.helps {
+  margin-top: 40px;
+}
+
+.helps pre {
+  padding: 20px;
+  margin: 10px 0;
+  border: solid 1px #e7e1cd;
+  background-color: #fffdef;
+  overflow: auto;
+}
+
+.icon_lists {
+  width: 100% !important;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.icon_lists li {
+  width: 100px;
+  margin-bottom: 10px;
+  margin-right: 20px;
+  text-align: center;
+  list-style: none !important;
+  cursor: default;
+}
+
+.icon_lists li .code-name {
+  line-height: 1.2;
+}
+
+.icon_lists .icon {
+  display: block;
+  height: 100px;
+  line-height: 100px;
+  font-size: 42px;
+  margin: 10px auto;
+  color: #333;
+  -webkit-transition: font-size 0.25s linear, width 0.25s linear;
+  -moz-transition: font-size 0.25s linear, width 0.25s linear;
+  transition: font-size 0.25s linear, width 0.25s linear;
+}
+
+.icon_lists .icon:hover {
+  font-size: 100px;
+}
+
+.icon_lists .svg-icon {
+  /* 通过设置 font-size 来改变图标大小 */
+  width: 1em;
+  /* 图标和文字相邻时,垂直对齐 */
+  vertical-align: -0.15em;
+  /* 通过设置 color 来改变 SVG 的颜色/fill */
+  fill: currentColor;
+  /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
+      normalize.css 中也包含这行 */
+  overflow: hidden;
+}
+
+.icon_lists li .name,
+.icon_lists li .code-name {
+  color: #666;
+}
+
+/* markdown 样式 */
+.markdown {
+  color: #666;
+  font-size: 14px;
+  line-height: 1.8;
+}
+
+.highlight {
+  line-height: 1.5;
+}
+
+.markdown img {
+  vertical-align: middle;
+  max-width: 100%;
+}
+
+.markdown h1 {
+  color: #404040;
+  font-weight: 500;
+  line-height: 40px;
+  margin-bottom: 24px;
+}
+
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+  color: #404040;
+  margin: 1.6em 0 0.6em 0;
+  font-weight: 500;
+  clear: both;
+}
+
+.markdown h1 {
+  font-size: 28px;
+}
+
+.markdown h2 {
+  font-size: 22px;
+}
+
+.markdown h3 {
+  font-size: 16px;
+}
+
+.markdown h4 {
+  font-size: 14px;
+}
+
+.markdown h5 {
+  font-size: 12px;
+}
+
+.markdown h6 {
+  font-size: 12px;
+}
+
+.markdown hr {
+  height: 1px;
+  border: 0;
+  background: #e9e9e9;
+  margin: 16px 0;
+  clear: both;
+}
+
+.markdown p {
+  margin: 1em 0;
+}
+
+.markdown>p,
+.markdown>blockquote,
+.markdown>.highlight,
+.markdown>ol,
+.markdown>ul {
+  width: 80%;
+}
+
+.markdown ul>li {
+  list-style: circle;
+}
+
+.markdown>ul li,
+.markdown blockquote ul>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown>ul li p,
+.markdown>ol li p {
+  margin: 0.6em 0;
+}
+
+.markdown ol>li {
+  list-style: decimal;
+}
+
+.markdown>ol li,
+.markdown blockquote ol>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown code {
+  margin: 0 3px;
+  padding: 0 5px;
+  background: #eee;
+  border-radius: 3px;
+}
+
+.markdown strong,
+.markdown b {
+  font-weight: 600;
+}
+
+.markdown>table {
+  border-collapse: collapse;
+  border-spacing: 0px;
+  empty-cells: show;
+  border: 1px solid #e9e9e9;
+  width: 95%;
+  margin-bottom: 24px;
+}
+
+.markdown>table th {
+  white-space: nowrap;
+  color: #333;
+  font-weight: 600;
+}
+
+.markdown>table th,
+.markdown>table td {
+  border: 1px solid #e9e9e9;
+  padding: 8px 16px;
+  text-align: left;
+}
+
+.markdown>table th {
+  background: #F7F7F7;
+}
+
+.markdown blockquote {
+  font-size: 90%;
+  color: #999;
+  border-left: 4px solid #e9e9e9;
+  padding-left: 0.8em;
+  margin: 1em 0;
+}
+
+.markdown blockquote p {
+  margin: 0;
+}
+
+.markdown .anchor {
+  opacity: 0;
+  transition: opacity 0.3s ease;
+  margin-left: 8px;
+}
+
+.markdown .waiting {
+  color: #ccc;
+}
+
+.markdown h1:hover .anchor,
+.markdown h2:hover .anchor,
+.markdown h3:hover .anchor,
+.markdown h4:hover .anchor,
+.markdown h5:hover .anchor,
+.markdown h6:hover .anchor {
+  opacity: 1;
+  display: inline-block;
+}
+
+.markdown>br,
+.markdown>p>br {
+  clear: both;
+}
+
+
+.hljs {
+  display: block;
+  background: white;
+  padding: 0.5em;
+  color: #333333;
+  overflow-x: auto;
+}
+
+.hljs-comment,
+.hljs-meta {
+  color: #969896;
+}
+
+.hljs-string,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-strong,
+.hljs-emphasis,
+.hljs-quote {
+  color: #df5000;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-type {
+  color: #a71d5d;
+}
+
+.hljs-literal,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-attribute {
+  color: #0086b3;
+}
+
+.hljs-section,
+.hljs-name {
+  color: #63a35c;
+}
+
+.hljs-tag {
+  color: #333333;
+}
+
+.hljs-title,
+.hljs-attr,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+  color: #795da3;
+}
+
+.hljs-addition {
+  color: #55a532;
+  background-color: #eaffea;
+}
+
+.hljs-deletion {
+  color: #bd2c00;
+  background-color: #ffecec;
+}
+
+.hljs-link {
+  text-decoration: underline;
+}
+
+/* 代码高亮 */
+/* PrismJS 1.15.0
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+  color: black;
+  background: none;
+  text-shadow: 0 1px white;
+  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+  text-align: left;
+  white-space: pre;
+  word-spacing: normal;
+  word-break: normal;
+  word-wrap: normal;
+  line-height: 1.5;
+
+  -moz-tab-size: 4;
+  -o-tab-size: 4;
+  tab-size: 4;
+
+  -webkit-hyphens: none;
+  -moz-hyphens: none;
+  -ms-hyphens: none;
+  hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+@media print {
+
+  code[class*="language-"],
+  pre[class*="language-"] {
+    text-shadow: none;
+  }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+  padding: 1em;
+  margin: .5em 0;
+  overflow: auto;
+}
+
+:not(pre)>code[class*="language-"],
+pre[class*="language-"] {
+  background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre)>code[class*="language-"] {
+  padding: .1em;
+  border-radius: .3em;
+  white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+  color: slategray;
+}
+
+.token.punctuation {
+  color: #999;
+}
+
+.namespace {
+  opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+  color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+  color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+  color: #9a6e3a;
+  background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+  color: #07a;
+}
+
+.token.function,
+.token.class-name {
+  color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+  color: #e90;
+}
+
+.token.important,
+.token.bold {
+  font-weight: bold;
+}
+
+.token.italic {
+  font-style: italic;
+}
+
+.token.entity {
+  cursor: help;
+}

+ 745 - 0
answer/src/common/font/demo_index.html

@@ -0,0 +1,745 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8"/>
+  <title>IconFont Demo</title>
+  <link rel="shortcut icon" href="https://gtms04.alicdn.com/tps/i4/TB1_oz6GVXXXXaFXpXXJDFnIXXX-64-64.ico" type="image/x-icon"/>
+  <link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">
+  <link rel="stylesheet" href="demo.css">
+  <link rel="stylesheet" href="iconfont.css">
+  <script src="iconfont.js"></script>
+  <!-- jQuery -->
+  <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>
+  <!-- 代码高亮 -->
+  <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script>
+</head>
+<body>
+  <div class="main">
+    <h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">&#xe86b;</a></h1>
+    <div class="nav-tabs">
+      <ul id="tabs" class="dib-box">
+        <li class="dib active"><span>Unicode</span></li>
+        <li class="dib"><span>Font class</span></li>
+        <li class="dib"><span>Symbol</span></li>
+      </ul>
+      
+      <a href="https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=1591804" target="_blank" class="nav-more">查看项目</a>
+      
+    </div>
+    <div class="tab-container">
+      <div class="content unicode" style="display: block;">
+          <ul class="icon_lists dib-box">
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe615;</span>
+                <div class="name">店铺</div>
+                <div class="code-name">&amp;#xe615;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe616;</span>
+                <div class="name">问卷</div>
+                <div class="code-name">&amp;#xe616;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe643;</span>
+                <div class="name">购物车</div>
+                <div class="code-name">&amp;#xe643;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe608;</span>
+                <div class="name">商品管理</div>
+                <div class="code-name">&amp;#xe608;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe66d;</span>
+                <div class="name">账号</div>
+                <div class="code-name">&amp;#xe66d;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe6fa;</span>
+                <div class="name">取消</div>
+                <div class="code-name">&amp;#xe6fa;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe638;</span>
+                <div class="name">商品管理</div>
+                <div class="code-name">&amp;#xe638;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe60b;</span>
+                <div class="name">加号</div>
+                <div class="code-name">&amp;#xe60b;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe64e;</span>
+                <div class="name">账号</div>
+                <div class="code-name">&amp;#xe64e;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe674;</span>
+                <div class="name">首页</div>
+                <div class="code-name">&amp;#xe674;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe627;</span>
+                <div class="name">店铺 (2)</div>
+                <div class="code-name">&amp;#xe627;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe731;</span>
+                <div class="name">手机</div>
+                <div class="code-name">&amp;#xe731;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe62b;</span>
+                <div class="name">头像</div>
+                <div class="code-name">&amp;#xe62b;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe665;</span>
+                <div class="name">验证码</div>
+                <div class="code-name">&amp;#xe665;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe614;</span>
+                <div class="name">时间</div>
+                <div class="code-name">&amp;#xe614;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe618;</span>
+                <div class="name">密码</div>
+                <div class="code-name">&amp;#xe618;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe600;</span>
+                <div class="name">删除/数字面板编辑态</div>
+                <div class="code-name">&amp;#xe600;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe617;</span>
+                <div class="name">编 辑</div>
+                <div class="code-name">&amp;#xe617;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe621;</span>
+                <div class="name">眼睛</div>
+                <div class="code-name">&amp;#xe621;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe623;</span>
+                <div class="name">yanjing</div>
+                <div class="code-name">&amp;#xe623;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe625;</span>
+                <div class="name">shijian</div>
+                <div class="code-name">&amp;#xe625;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe626;</span>
+                <div class="name">眼睛2</div>
+                <div class="code-name">&amp;#xe626;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe63f;</span>
+                <div class="name">shangpinguanli (1)@2x</div>
+                <div class="code-name">&amp;#xe63f;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe642;</span>
+                <div class="name">dianpu-copy@2x</div>
+                <div class="code-name">&amp;#xe642;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe644;</span>
+                <div class="name">shangpinguanli@2x</div>
+                <div class="code-name">&amp;#xe644;</div>
+              </li>
+          
+          </ul>
+          <div class="article markdown">
+          <h2 id="unicode-">Unicode 引用</h2>
+          <hr>
+
+          <p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>
+          <ul>
+            <li>兼容性最好,支持 IE6+,及所有现代浏览器。</li>
+            <li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
+            <li>但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。</li>
+          </ul>
+          <blockquote>
+            <p>注意:新版 iconfont 支持多色图标,这些多色图标在 Unicode 模式下将不能使用,如果有需求建议使用symbol 的引用方式</p>
+          </blockquote>
+          <p>Unicode 使用步骤如下:</p>
+          <h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>
+<pre><code class="language-css"
+>@font-face {
+  font-family: 'iconfont';
+  src: url('iconfont.eot');
+  src: url('iconfont.eot?#iefix') format('embedded-opentype'),
+      url('iconfont.woff2') format('woff2'),
+      url('iconfont.woff') format('woff'),
+      url('iconfont.ttf') format('truetype'),
+      url('iconfont.svg#iconfont') format('svg');
+}
+</code></pre>
+          <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
+<pre><code class="language-css"
+>.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+</code></pre>
+          <h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>
+<pre>
+<code class="language-html"
+>&lt;span class="iconfont"&gt;&amp;#x33;&lt;/span&gt;
+</code></pre>
+          <blockquote>
+            <p>"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
+          </blockquote>
+          </div>
+      </div>
+      <div class="content font-class">
+        <ul class="icon_lists dib-box">
+          
+          <li class="dib">
+            <span class="icon iconfont iconjinrudianpu"></span>
+            <div class="name">
+              店铺
+            </div>
+            <div class="code-name">.iconjinrudianpu
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconwenjuan"></span>
+            <div class="name">
+              问卷
+            </div>
+            <div class="code-name">.iconwenjuan
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icongouwuche"></span>
+            <div class="name">
+              购物车
+            </div>
+            <div class="code-name">.icongouwuche
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconshangpinguanli"></span>
+            <div class="name">
+              商品管理
+            </div>
+            <div class="code-name">.iconshangpinguanli
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconzhanghao"></span>
+            <div class="name">
+              账号
+            </div>
+            <div class="code-name">.iconzhanghao
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconquxiao"></span>
+            <div class="name">
+              取消
+            </div>
+            <div class="code-name">.iconquxiao
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconshangpinguanli1"></span>
+            <div class="name">
+              商品管理
+            </div>
+            <div class="code-name">.iconshangpinguanli1
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconjiahao-copy"></span>
+            <div class="name">
+              加号
+            </div>
+            <div class="code-name">.iconjiahao-copy
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconef-zhanghao"></span>
+            <div class="name">
+              账号
+            </div>
+            <div class="code-name">.iconef-zhanghao
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconshouye"></span>
+            <div class="name">
+              首页
+            </div>
+            <div class="code-name">.iconshouye
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icondianpu-copy"></span>
+            <div class="name">
+              店铺 (2)
+            </div>
+            <div class="code-name">.icondianpu-copy
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconshouji"></span>
+            <div class="name">
+              手机
+            </div>
+            <div class="code-name">.iconshouji
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icontouxiang"></span>
+            <div class="name">
+              头像
+            </div>
+            <div class="code-name">.icontouxiang
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconyanzhengma"></span>
+            <div class="name">
+              验证码
+            </div>
+            <div class="code-name">.iconyanzhengma
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconshijian"></span>
+            <div class="name">
+              时间
+            </div>
+            <div class="code-name">.iconshijian
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconmima"></span>
+            <div class="name">
+              密码
+            </div>
+            <div class="code-name">.iconmima
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconchuyidong"></span>
+            <div class="name">
+              删除/数字面板编辑态
+            </div>
+            <div class="code-name">.iconchuyidong
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconbianji"></span>
+            <div class="name">
+              编 辑
+            </div>
+            <div class="code-name">.iconbianji
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconyanjing"></span>
+            <div class="name">
+              眼睛
+            </div>
+            <div class="code-name">.iconyanjing
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconyanjing1"></span>
+            <div class="name">
+              yanjing
+            </div>
+            <div class="code-name">.iconyanjing1
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconshijian1"></span>
+            <div class="name">
+              shijian
+            </div>
+            <div class="code-name">.iconshijian1
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconyanjing3"></span>
+            <div class="name">
+              眼睛2
+            </div>
+            <div class="code-name">.iconyanjing3
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconshangpinguanlix"></span>
+            <div class="name">
+              shangpinguanli (1)@2x
+            </div>
+            <div class="code-name">.iconshangpinguanlix
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icondianpu-copyx"></span>
+            <div class="name">
+              dianpu-copy@2x
+            </div>
+            <div class="code-name">.icondianpu-copyx
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont iconcaigouguanli"></span>
+            <div class="name">
+              shangpinguanli@2x
+            </div>
+            <div class="code-name">.iconcaigouguanli
+            </div>
+          </li>
+          
+        </ul>
+        <div class="article markdown">
+        <h2 id="font-class-">font-class 引用</h2>
+        <hr>
+
+        <p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>
+        <p>与 Unicode 使用方式相比,具有如下特点:</p>
+        <ul>
+          <li>兼容性良好,支持 IE8+,及所有现代浏览器。</li>
+          <li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
+          <li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>
+          <li>不过因为本质上还是使用的字体,所以多色图标还是不支持的。</li>
+        </ul>
+        <p>使用步骤如下:</p>
+        <h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
+<pre><code class="language-html">&lt;link rel="stylesheet" href="./iconfont.css"&gt;
+</code></pre>
+        <h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
+<pre><code class="language-html">&lt;span class="iconfont iconxxx"&gt;&lt;/span&gt;
+</code></pre>
+        <blockquote>
+          <p>"
+            iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
+        </blockquote>
+      </div>
+      </div>
+      <div class="content symbol">
+          <ul class="icon_lists dib-box">
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconjinrudianpu"></use>
+                </svg>
+                <div class="name">店铺</div>
+                <div class="code-name">#iconjinrudianpu</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconwenjuan"></use>
+                </svg>
+                <div class="name">问卷</div>
+                <div class="code-name">#iconwenjuan</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icongouwuche"></use>
+                </svg>
+                <div class="name">购物车</div>
+                <div class="code-name">#icongouwuche</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconshangpinguanli"></use>
+                </svg>
+                <div class="name">商品管理</div>
+                <div class="code-name">#iconshangpinguanli</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconzhanghao"></use>
+                </svg>
+                <div class="name">账号</div>
+                <div class="code-name">#iconzhanghao</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconquxiao"></use>
+                </svg>
+                <div class="name">取消</div>
+                <div class="code-name">#iconquxiao</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconshangpinguanli1"></use>
+                </svg>
+                <div class="name">商品管理</div>
+                <div class="code-name">#iconshangpinguanli1</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconjiahao-copy"></use>
+                </svg>
+                <div class="name">加号</div>
+                <div class="code-name">#iconjiahao-copy</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconef-zhanghao"></use>
+                </svg>
+                <div class="name">账号</div>
+                <div class="code-name">#iconef-zhanghao</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconshouye"></use>
+                </svg>
+                <div class="name">首页</div>
+                <div class="code-name">#iconshouye</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icondianpu-copy"></use>
+                </svg>
+                <div class="name">店铺 (2)</div>
+                <div class="code-name">#icondianpu-copy</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconshouji"></use>
+                </svg>
+                <div class="name">手机</div>
+                <div class="code-name">#iconshouji</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icontouxiang"></use>
+                </svg>
+                <div class="name">头像</div>
+                <div class="code-name">#icontouxiang</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconyanzhengma"></use>
+                </svg>
+                <div class="name">验证码</div>
+                <div class="code-name">#iconyanzhengma</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconshijian"></use>
+                </svg>
+                <div class="name">时间</div>
+                <div class="code-name">#iconshijian</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconmima"></use>
+                </svg>
+                <div class="name">密码</div>
+                <div class="code-name">#iconmima</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconchuyidong"></use>
+                </svg>
+                <div class="name">删除/数字面板编辑态</div>
+                <div class="code-name">#iconchuyidong</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconbianji"></use>
+                </svg>
+                <div class="name">编 辑</div>
+                <div class="code-name">#iconbianji</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconyanjing"></use>
+                </svg>
+                <div class="name">眼睛</div>
+                <div class="code-name">#iconyanjing</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconyanjing1"></use>
+                </svg>
+                <div class="name">yanjing</div>
+                <div class="code-name">#iconyanjing1</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconshijian1"></use>
+                </svg>
+                <div class="name">shijian</div>
+                <div class="code-name">#iconshijian1</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconyanjing3"></use>
+                </svg>
+                <div class="name">眼睛2</div>
+                <div class="code-name">#iconyanjing3</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconshangpinguanlix"></use>
+                </svg>
+                <div class="name">shangpinguanli (1)@2x</div>
+                <div class="code-name">#iconshangpinguanlix</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icondianpu-copyx"></use>
+                </svg>
+                <div class="name">dianpu-copy@2x</div>
+                <div class="code-name">#icondianpu-copyx</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#iconcaigouguanli"></use>
+                </svg>
+                <div class="name">shangpinguanli@2x</div>
+                <div class="code-name">#iconcaigouguanli</div>
+            </li>
+          
+          </ul>
+          <div class="article markdown">
+          <h2 id="symbol-">Symbol 引用</h2>
+          <hr>
+
+          <p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>
+            这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:</p>
+          <ul>
+            <li>支持多色图标了,不再受单色限制。</li>
+            <li>通过一些技巧,支持像字体那样,通过 <code>font-size</code>, <code>color</code> 来调整样式。</li>
+            <li>兼容性较差,支持 IE9+,及现代浏览器。</li>
+            <li>浏览器渲染 SVG 的性能一般,还不如 png。</li>
+          </ul>
+          <p>使用步骤如下:</p>
+          <h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3>
+<pre><code class="language-html">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;
+</code></pre>
+          <h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>
+<pre><code class="language-html">&lt;style&gt;
+.icon {
+  width: 1em;
+  height: 1em;
+  vertical-align: -0.15em;
+  fill: currentColor;
+  overflow: hidden;
+}
+&lt;/style&gt;
+</code></pre>
+          <h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
+<pre><code class="language-html">&lt;svg class="icon" aria-hidden="true"&gt;
+  &lt;use xlink:href="#icon-xxx"&gt;&lt;/use&gt;
+&lt;/svg&gt;
+</code></pre>
+          </div>
+      </div>
+
+    </div>
+  </div>
+  <script>
+  $(document).ready(function () {
+      $('.tab-container .content:first').show()
+
+      $('#tabs li').click(function (e) {
+        var tabContent = $('.tab-container .content')
+        var index = $(this).index()
+
+        if ($(this).hasClass('active')) {
+          return
+        } else {
+          $('#tabs li').removeClass('active')
+          $(this).addClass('active')
+
+          tabContent.hide().eq(index).fadeIn()
+        }
+      })
+    })
+  </script>
+</body>
+</html>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 117 - 0
answer/src/common/font/iconfont.css


BIN
answer/src/common/font/iconfont.eot


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
answer/src/common/font/iconfont.js


+ 184 - 0
answer/src/common/font/iconfont.json

@@ -0,0 +1,184 @@
+{
+  "id": "1591804",
+  "name": "dtpc-admin",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon",
+  "description": "",
+  "glyphs": [
+    {
+      "icon_id": "778003",
+      "name": "店铺",
+      "font_class": "jinrudianpu",
+      "unicode": "e615",
+      "unicode_decimal": 58901
+    },
+    {
+      "icon_id": "1009026",
+      "name": "问卷",
+      "font_class": "wenjuan",
+      "unicode": "e616",
+      "unicode_decimal": 58902
+    },
+    {
+      "icon_id": "1155506",
+      "name": "购物车",
+      "font_class": "gouwuche",
+      "unicode": "e643",
+      "unicode_decimal": 58947
+    },
+    {
+      "icon_id": "1391285",
+      "name": "商品管理",
+      "font_class": "shangpinguanli",
+      "unicode": "e608",
+      "unicode_decimal": 58888
+    },
+    {
+      "icon_id": "2842517",
+      "name": "账号",
+      "font_class": "zhanghao",
+      "unicode": "e66d",
+      "unicode_decimal": 58989
+    },
+    {
+      "icon_id": "3005283",
+      "name": "取消",
+      "font_class": "quxiao",
+      "unicode": "e6fa",
+      "unicode_decimal": 59130
+    },
+    {
+      "icon_id": "3247646",
+      "name": "商品管理",
+      "font_class": "shangpinguanli1",
+      "unicode": "e638",
+      "unicode_decimal": 58936
+    },
+    {
+      "icon_id": "3298423",
+      "name": "加号",
+      "font_class": "jiahao-copy",
+      "unicode": "e60b",
+      "unicode_decimal": 58891
+    },
+    {
+      "icon_id": "3446700",
+      "name": "账号",
+      "font_class": "ef-zhanghao",
+      "unicode": "e64e",
+      "unicode_decimal": 58958
+    },
+    {
+      "icon_id": "4486699",
+      "name": "首页",
+      "font_class": "shouye",
+      "unicode": "e674",
+      "unicode_decimal": 58996
+    },
+    {
+      "icon_id": "4701701",
+      "name": "店铺 (2)",
+      "font_class": "dianpu-copy",
+      "unicode": "e627",
+      "unicode_decimal": 58919
+    },
+    {
+      "icon_id": "5722543",
+      "name": "手机",
+      "font_class": "shouji",
+      "unicode": "e731",
+      "unicode_decimal": 59185
+    },
+    {
+      "icon_id": "6260742",
+      "name": "头像",
+      "font_class": "touxiang",
+      "unicode": "e62b",
+      "unicode_decimal": 58923
+    },
+    {
+      "icon_id": "6730191",
+      "name": "验证码",
+      "font_class": "yanzhengma",
+      "unicode": "e665",
+      "unicode_decimal": 58981
+    },
+    {
+      "icon_id": "8019605",
+      "name": "时间",
+      "font_class": "shijian",
+      "unicode": "e614",
+      "unicode_decimal": 58900
+    },
+    {
+      "icon_id": "9349169",
+      "name": "密码",
+      "font_class": "mima",
+      "unicode": "e618",
+      "unicode_decimal": 58904
+    },
+    {
+      "icon_id": "9645417",
+      "name": "删除/数字面板编辑态",
+      "font_class": "chuyidong",
+      "unicode": "e600",
+      "unicode_decimal": 58880
+    },
+    {
+      "icon_id": "11543012",
+      "name": "编 辑",
+      "font_class": "bianji",
+      "unicode": "e617",
+      "unicode_decimal": 58903
+    },
+    {
+      "icon_id": "12205622",
+      "name": "眼睛",
+      "font_class": "yanjing",
+      "unicode": "e621",
+      "unicode_decimal": 58913
+    },
+    {
+      "icon_id": "12226479",
+      "name": "yanjing",
+      "font_class": "yanjing1",
+      "unicode": "e623",
+      "unicode_decimal": 58915
+    },
+    {
+      "icon_id": "12226481",
+      "name": "shijian",
+      "font_class": "shijian1",
+      "unicode": "e625",
+      "unicode_decimal": 58917
+    },
+    {
+      "icon_id": "12226485",
+      "name": "眼睛2",
+      "font_class": "yanjing3",
+      "unicode": "e626",
+      "unicode_decimal": 58918
+    },
+    {
+      "icon_id": "12797207",
+      "name": "shangpinguanli (1)@2x",
+      "font_class": "shangpinguanlix",
+      "unicode": "e63f",
+      "unicode_decimal": 58943
+    },
+    {
+      "icon_id": "12797277",
+      "name": "dianpu-copy@2x",
+      "font_class": "dianpu-copyx",
+      "unicode": "e642",
+      "unicode_decimal": 58946
+    },
+    {
+      "icon_id": "12797452",
+      "name": "shangpinguanli@2x",
+      "font_class": "caigouguanli",
+      "unicode": "e644",
+      "unicode_decimal": 58948
+    }
+  ]
+}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 101 - 0
answer/src/common/font/iconfont.svg


BIN
answer/src/common/font/iconfont.ttf


BIN
answer/src/common/font/iconfont.woff


BIN
answer/src/common/font/iconfont.woff2


BIN
answer/src/common/font/pingFang.ttf


+ 21 - 0
answer/src/common/utils/cookiesDeploy.js

@@ -0,0 +1,21 @@
+/*
+ * @Author       : yuanrunwei
+ * @Date         : 2020-05-18 12:05:37
+ * @LastEditors  : yuanrunwei
+ * @LastEditTime : 2020-05-22 19:27:45
+ * @FilePath     : \feiduoduo_admin\src\common\utils\cookiesDeploy.js
+ */
+import Cookies from 'js-cookie'
+const domain = process.env.VUE_APP_DOMAIN
+
+export default {
+  setCookies (res) {
+    Cookies.set('AUTH', res.object, { expires: 36500, domain })
+  },
+  getCookies () {
+    return Cookies.get('AUTH', { domain })
+  },
+  removeCookies () {
+    Cookies.remove('AUTH', { domain })
+  }
+}

+ 44 - 0
answer/src/common/utils/utils.js

@@ -0,0 +1,44 @@
+export default {
+  getEnv () {
+    return process.env
+  },
+  format (time) {
+    let date = new Date(time)
+    let y = date.getFullYear()
+    let m = date.getMonth() + 1
+    m = m < 10 ? '0' + m : m
+    let d = date.getDate()
+    d = d < 10 ? '0' + d : d
+    let h = date.getHours()
+    h = h < 10 ? '0' + h : h
+    let minute = date.getMinutes()
+    let second = date.getSeconds()
+    minute = minute < 10 ? '0' + minute : minute
+    second = second < 10 ? '0' + second : second
+    return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second
+  },
+  // 只显示年月日
+  formatYMD (time) {
+    let date = new Date(time)
+    let y = date.getFullYear()
+    let m = date.getMonth() + 1
+    m = m < 10 ? '0' + m : m
+    let d = date.getDate()
+    d = d < 10 ? '0' + d : d
+    return y + '-' + m + '-' + d
+  },
+  formatMoney (num) {
+    num = num + ''
+    if (isNaN(num)) { num = '0' }
+    let sign = ((num - 0) === (num = Math.abs(num)))
+    num = Math.floor(num * 100 + 0.50000000001)
+    let cents = num % 100
+    num = Math.floor(num / 100).toString()
+    if (cents < 10) { cents = '0' + cents }
+    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
+      num = num.substring(0, num.length - (4 * i + 3)) + ',' +
+    num.substring(num.length - (4 * i + 3))
+    }
+    return ((sign) ? '' : '-') + num + '.' + cents
+  }
+}

+ 42 - 0
answer/src/main.js

@@ -0,0 +1,42 @@
+/*
+ * @Author       : yuanrunwei
+ * @Date         : 2020-05-18 12:05:37
+ * @LastEditors  : yuanrunwei
+ * @LastEditTime : 2020-05-18 12:21:24
+ * @FilePath     : \ambre-admin-noob\src\main.js
+ */
+import Vue from 'vue'
+import App from './App.vue'
+import store from './store'
+import router from './router'
+import api from './common/api/api'
+import utils from './common/utils/utils'
+import Cookies from 'js-cookie'
+
+import VueCropper from 'vue-cropper'
+
+import cookiesDeploy from './common/utils/cookiesDeploy'
+
+import './common/font/iconfont.css'
+// import './permission.js'
+
+import 'babel-polyfill'
+
+Vue.use(VueCropper)
+Vue.use(Cookies)
+
+Vue.prototype.Cookies = Cookies
+Vue.prototype.$cookies = cookiesDeploy
+Vue.prototype.$auth = cookiesDeploy.getCookies()
+Vue.prototype.$api = api
+Vue.prototype.$utils = utils
+Vue.prototype.$storeId = parseInt(localStorage.getItem('storeId')) || ''
+Vue.prototype.$img = process.env.VUE_APP_IMG
+Vue.prototype.$url = process.env.VUE_APP_API
+Vue.config.productionTip = false
+
+export default new Vue({
+  router,
+  store,
+  render: h => h(App)
+}).$mount('#app')

+ 40 - 0
answer/src/router/index.js

@@ -0,0 +1,40 @@
+/*
+ * @Author       : yuanrunwei
+ * @Date         : 2020-05-18 12:05:37
+ * @LastEditors: XuTongZhang
+ * @LastEditTime: 2020-08-03 15:09:54
+ * @FilePath     : \ambre-admin-noob\src\router\index.js
+ */
+import Vue from 'vue'
+import VueRouter from 'vue-router'
+// import cookiesDeploy from '../common/utils/cookiesDeploy'
+Vue.use(VueRouter)
+// let list
+
+const routes = [
+  // error
+  {
+    path: '*',
+    name: 'error',
+    component: resolve => require(['@/views/error'], resolve)
+  },
+  // login
+  {
+    path: '/login',
+    name: 'login',
+    component: () => import('@/views/login.vue')
+  },
+  // redirect
+  {
+    path: '/',
+    redirect: '/login'
+  }
+]
+
+const router = new VueRouter({
+  mode: 'history',
+  base: process.env.BASE_URL,
+  routes
+})
+
+export default router

+ 21 - 0
answer/src/store/index.js

@@ -0,0 +1,21 @@
+/*
+ * @Description: create
+ * @Version: 1.0
+ * @Autor: XuTongZhang
+ * @Date: 2020-06-09 15:30:15
+ * @LastEditors: XuTongZhang
+ * @LastEditTime: 2020-07-28 14:36:55
+ */
+
+import Vue from 'vue'
+import Vuex from 'vuex'
+
+Vue.use(Vuex)
+
+export default new Vuex.Store({
+  state: {},
+  mutations: {},
+  getters: {},
+  actions: {},
+  modules: {}
+})

+ 13 - 0
answer/src/views/error.vue

@@ -0,0 +1,13 @@
+<template>
+  <div>404</div>
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style>
+
+</style>

+ 11 - 0
answer/src/views/index.vue

@@ -0,0 +1,11 @@
+<template>
+
+</template>
+
+<script>
+
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 18 - 0
answer/src/views/login.vue

@@ -0,0 +1,18 @@
+<!--
+ * @Author       : yuanrunwei
+ * @Date         : 2020-05-18 12:05:37
+ * @LastEditors  : yuanrunwei
+ * @LastEditTime : 2020-05-18 19:27:42
+ * @FilePath     : \ambre-admin-noob\src\views\login.vue
+-->
+<template>
+<div class="login">
+
+</div>
+</template>
+
+<style lang="scss" scoped>
+</style>
+
+<script>
+</script>

+ 18 - 0
answer/vue.config.js

@@ -0,0 +1,18 @@
+/*
+ * @Author       : yuanrunwei
+ * @Date         : 2020-06-10 15:38:47
+ * @LastEditors: XuTongZhang
+ * @LastEditTime: 2020-07-29 10:45:35
+ * @FilePath     : \batterycloud-admin\vue.config.js
+ */
+module.exports = {
+  transpileDependencies: [/node_modules[/\\\\](vuex|)[/\\\\]/],
+  publicPath: './',
+  runtimeCompiler: true,
+  productionSourceMap: false,
+  devServer: {
+    host: '127.0.0.1',
+    https: false,
+    open: true
+  }
+}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 8904 - 0
answer/yarn.lock