Przeglądaj źródła

上传本地最新代码,合并dev分支

manywhy 2 dni temu
rodzic
commit
bff1fcfbd3
100 zmienionych plików z 3986 dodań i 18 usunięć
  1. 13 1
      build/webpack.base.conf.js
  2. 2 1
      build/webpack.prod.conf.js
  3. BIN
      gdy_pc_8.rar
  4. 19 11
      index.html
  5. 55 2
      package.json
  6. 1 1
      src/api/login.js
  7. BIN
      src/assets/123.pdf
  8. 401 0
      src/assets/css/base.css
  9. 105 0
      src/assets/css/override-element-ui.css
  10. 1145 0
      src/assets/css/workflow.css
  11. BIN
      src/assets/excel.jpg
  12. BIN
      src/assets/header_bg.png
  13. 539 0
      src/assets/iconfont/demo.css
  14. 1062 0
      src/assets/iconfont/demo_index.html
  15. 168 0
      src/assets/iconfont/iconfont.css
  16. 0 0
      src/assets/iconfont/iconfont.js
  17. 268 0
      src/assets/iconfont/iconfont.json
  18. BIN
      src/assets/iconfont/iconfont.ttf
  19. BIN
      src/assets/iconfont/iconfont.woff
  20. BIN
      src/assets/iconfont/iconfont.woff2
  21. BIN
      src/assets/images/add-close.png
  22. BIN
      src/assets/images/add-close1.png
  23. BIN
      src/assets/images/cancel.png
  24. BIN
      src/assets/images/check_box.png
  25. BIN
      src/assets/images/close-circle.png
  26. BIN
      src/assets/images/delete.png
  27. BIN
      src/assets/images/left-arrow.png
  28. BIN
      src/assets/images/minus-90-90.png
  29. BIN
      src/assets/images/plus-90-90.png
  30. BIN
      src/assets/images/right-arrow.png
  31. BIN
      src/assets/images/warning.png
  32. BIN
      src/assets/indicators_template.xlsx
  33. BIN
      src/assets/posx.jpg
  34. BIN
      src/assets/robot.png
  35. BIN
      src/assets/step/add-indicator-tips.png
  36. BIN
      src/assets/step/choose-employee-tips.png
  37. BIN
      src/assets/step/choose-indicator-tips.png
  38. BIN
      src/assets/step/choose-process-tips.png
  39. BIN
      src/assets/step/edit-data-tips.png
  40. BIN
      src/assets/step/formulaStep/formula1.png
  41. BIN
      src/assets/step/formulaStep/formula2-1.png
  42. BIN
      src/assets/step/formulaStep/formula2-2.png
  43. BIN
      src/assets/step/formulaStep/formula2-3.png
  44. BIN
      src/assets/step/formulaStep/formula3-1.png
  45. BIN
      src/assets/step/formulaStep/formula3-2.png
  46. BIN
      src/assets/step/formulaStep/formula4-1.png
  47. BIN
      src/assets/step/formulaStep/formula4-2.png
  48. BIN
      src/assets/step/formulaStep/formula4-3.png
  49. BIN
      src/assets/step/formulaStep/formula4-4.png
  50. BIN
      src/assets/step/formulaStep/formula4-5.png
  51. BIN
      src/assets/step/publish-btn-tips.png
  52. BIN
      src/assets/step/result-input-handle1.png
  53. BIN
      src/assets/step/result-input-handle2.png
  54. BIN
      src/assets/step/result-input-handle3.png
  55. BIN
      src/assets/step/result-input-handle4.png
  56. BIN
      src/assets/step/result-input-handle5.png
  57. BIN
      src/assets/step/step.png
  58. BIN
      src/assets/step/step1.png
  59. BIN
      src/assets/step/target-confirm-handle1.png
  60. BIN
      src/assets/step/target-confirm-handle2.png
  61. BIN
      src/assets/step/target-confirm-handle3.png
  62. BIN
      src/assets/step/target-confirm-handle4.png
  63. BIN
      src/assets/step/target-confirm-handle5.png
  64. BIN
      src/assets/step/templateDetail/calcMethods.png
  65. BIN
      src/assets/step/templateDetail/cc.png
  66. BIN
      src/assets/step/templateDetail/flowSetting.png
  67. BIN
      src/assets/step/templateDetail/resultInput.png
  68. BIN
      src/assets/step/templateDetail/review.png
  69. BIN
      src/assets/step/templateDetail/score.png
  70. BIN
      src/assets/step/templateDetail/scoreEachOther.png
  71. BIN
      src/assets/step/templateDetail/selfScore.png
  72. BIN
      src/assets/step/templateDetail/setting-flow-tips.png
  73. BIN
      src/assets/step/templateDetail/targetConfirm.png
  74. BIN
      src/assets/step/workbench/Snipaste_2025-10-09_10-22-29.png
  75. BIN
      src/assets/step/workbench/last-performance.png
  76. BIN
      src/assets/step/workbench/mock-data.png
  77. BIN
      src/assets/step/workbench/more-target-confirm.png
  78. BIN
      src/assets/step/workbench/more.png
  79. BIN
      src/assets/step/workbench/old-perfermance.png
  80. BIN
      src/assets/step/workbench/performance-detail.png
  81. BIN
      src/assets/step/workbench/result-input.png
  82. BIN
      src/assets/step/workbench/review-details.png
  83. BIN
      src/assets/step/workbench/review-list.png
  84. BIN
      src/assets/step/workbench/review.png
  85. BIN
      src/assets/step/workbench/score.png
  86. BIN
      src/assets/step/workbench/self-score.png
  87. BIN
      src/assets/step/workbench/target-confirm.png
  88. BIN
      src/assets/targetStep/add-target-dialog.png
  89. BIN
      src/assets/targetStep/cycle-list.png
  90. BIN
      src/assets/targetStep/dismantling-target.png
  91. BIN
      src/assets/targetStep/drawer-box.png
  92. BIN
      src/assets/targetStep/message-list.png
  93. BIN
      src/assets/targetStep/month-data.png
  94. BIN
      src/assets/targetStep/publish-step.png
  95. BIN
      src/assets/targetStep/target-step.png
  96. BIN
      src/assets/targetStep/task-list.png
  97. 14 0
      src/assets/theme.less
  98. 2 0
      src/components/AppealCreate.vue
  99. 190 0
      src/components/ExcelPreview.vue
  100. 2 2
      src/components/PageHead.vue

+ 13 - 1
build/webpack.base.conf.js

@@ -76,7 +76,19 @@ module.exports = {
           limit: 10000,
           name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
         }
-      }
+      },
+      {
+        test: /\.(xlsx|xls)$/, // 匹配 Excel 文件
+        use: [
+          {
+            loader: 'file-loader',
+            options: {
+              name: '[name].[ext]', // 输出文件名
+              outputPath: 'static/excels/', // 输出路径
+            },
+          },
+        ],
+      },
     ]
   },
   plugins: [new VueLoaderPlugin()],

+ 2 - 1
build/webpack.prod.conf.js

@@ -132,7 +132,8 @@ const webpackConfig = merge(baseWebpackConfig, {
         },
         sourceMap: config.build.productionSourceMap,
         cache: true,
-        parallel: true
+        parallel: true,
+        exclude: /(node_modules|static)/
       }),
       // Compress extracted CSS. We are using this plugin so that possible
       // duplicated CSS from different components can be deduped.

BIN
gdy_pc_8.rar


+ 19 - 11
index.html

@@ -3,14 +3,20 @@
 
 <head>
   <meta charset="utf-8">
-  <meta name="force-rendering" content="webkit"/>
+  <meta name="force-rendering" content="webkit" />
   <meta name="renderer" content="webkit" />
   <meta name="format-detection" content="telephone=no">
   <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-  <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no,viewport-fit=cover">
+  <meta name="viewport"
+    content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no,viewport-fit=cover">
   <title>功道云</title>
-  <script src="https://at.alicdn.com/t/c/font_3688269_h7ynmhqwysu.js?spm=a313x.7781069.1998910419.80&file=font_3688269_h7ynmhqwysu.js"></script>
+  <script
+    src="https://at.alicdn.com/t/c/font_3688269_h7ynmhqwysu.js?spm=a313x.7781069.1998910419.80&file=font_3688269_h7ynmhqwysu.js"></script>
   <script src="static/js/polyfill.min.js"></script>
+  <!-- 使用更稳定的PDF.js版本 -->
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.min.js"></script>
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/mammoth/1.4.17/mammoth.browser.min.js"></script>
   <style>
     .chromLink {
       width: 163px;
@@ -50,14 +56,16 @@
 </head>
 
 <body>
-<div style="position: absolute; top:-100000px; left:-100000px;">
-  <input type="text">
-  <input type="password">
-</div>
+  <div style="position: absolute; top:-100000px; left:-100000px;">
+    <input type="text">
+    <input type="password">
+  </div>
   <div id="app"></div>
-  <div id='ie_tip' style='display:none'><img style='position:absolute;left:50%;margin-left:-366px;' src='static/images/ltIE9.png'><a
-      href='https://www.baidu.com/s?ie=UTF-8&wd=%E8%B0%B7%E6%AD%8C%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' class='chromLink'></a><a
-      href='https://www.baidu.com/s?ie=UTF-8&wd=%E7%81%AB%E7%8B%90%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' class='firefoxLink'></a></div>
+  <div id='ie_tip' style='display:none'><img style='position:absolute;left:50%;margin-left:-366px;'
+      src='static/images/ltIE9.png'><a
+      href='https://www.baidu.com/s?ie=UTF-8&wd=%E8%B0%B7%E6%AD%8C%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank'
+      class='chromLink'></a><a href='https://www.baidu.com/s?ie=UTF-8&wd=%E7%81%AB%E7%8B%90%E6%B5%8F%E8%A7%88%E5%99%A8'
+      target='_blank' class='firefoxLink'></a></div>
   <!-- built files will be auto injected -->
 </body>
 <script>
@@ -76,4 +84,4 @@
   })(window);
 </script>
 
-</html>
+</html>

+ 55 - 2
package.json

@@ -26,41 +26,90 @@
     "url": "https://github.com/PanJiaChen/vue-element-admin/issues"
   },
   "dependencies": {
+    "@stomp/stompjs": "^7.0.0",
+    "@tiptap/core": "^2.11.5",
+    "@tiptap/extension-bullet-list": "^2.11.5",
+    "@tiptap/extension-document": "^2.11.5",
+    "@tiptap/extension-gapcursor": "^2.11.5",
+    "@tiptap/extension-hard-break": "^2.11.5",
+    "@tiptap/extension-list-item": "^2.11.5",
+    "@tiptap/extension-ordered-list": "^2.11.5",
+    "@tiptap/extension-paragraph": "^2.11.5",
+    "@tiptap/extension-text": "^2.11.5",
+    "@tiptap/pm": "^2.11.5",
+    "@tiptap/starter-kit": "^2.11.5",
+    "@tiptap/vue-2": "^2.11.5",
+    "@vue-flow/background": "^1.3.2",
+    "@vue-flow/controls": "^1.1.2",
+    "@vue-flow/core": "^1.19.3",
+    "@vue-flow/minimap": "^1.5.3",
+    "@vue-flow/node-resizer": "^1.5.0",
+    "@vue-flow/node-toolbar": "^1.1.1",
+    "@vue-office/docx": "^1.6.3",
+    "@vue-office/excel": "^1.3.0",
+    "@vue-office/pdf": "^2.0.10",
+    "@vue/composition-api": "^1.7.2",
     "@wangeditor/editor": "^5.1.23",
     "@wangeditor/editor-for-vue": "^1.0.2",
     "axios": "^1.6.2",
     "babel-runtime": "^6.26.0",
     "clipboard": "^2.0.11",
+    "colresizable": "^1.6.0",
     "connect": "^3.7.0",
     "date-fns": "^4.1.0",
     "dhtmlx-gantt": "^8.0.6",
+    "dompurify": "^3.2.6",
+    "driver.js": "^0.9.8",
     "echarts": "^4.9.0",
     "element-ui": "^2.14.1",
+    "highlight.js": "^11.11.1",
     "i": "^0.3.7",
+    "intro.js": "^7.2.0",
     "js-cookie": "^3.0.5",
     "jsencrypt": "^3.2.2",
+    "luckyexcel": "^1.0.1",
+    "mammoth": "^1.11.0",
+    "marked": "^0.8.0",
     "moment": "^2.29.4",
     "node-sass": "^4.14.1",
     "normalize.css": "^8.0.1",
     "npm": "^7.20.1",
     "nprogress": "0.2.0",
+    "pdfjs-dist": "^2.16.105",
     "photoswipe": "^4.1.3",
     "pikaz-excel-js": "^0.2.16",
     "qrcodejs2": "0.0.2",
     "qs": "^6.11.2",
+    "sockjs-client": "^1.6.1",
+    "stompjs": "^2.3.3",
     "swiper": "^5.4.5",
+    "tiptap": "^1.32.2",
     "uglify-js": "^3.19.3",
+    "v-viewer": "^1.7.4",
+    "viewerjs": "^1.11.7",
     "vue": "^2.7.15",
     "vue-baidu-map": "^0.21.20",
     "vue-calendar-component": "^2.8.2",
+    "vue-clickaway": "^2.2.2",
     "vue-count-to": "^1.0.13",
     "vue-json-excel": "^0.3.0",
+    "vue-pdf": "^4.3.0",
     "vue-photo-preview": "^1.0.9",
+    "vue-puzzle-vcode": "^1.1.10",
     "vue-router": "^3.6.5",
     "vue-router-storage": "^1.0.9",
     "vue-seamless-scroll": "^1.1.23",
     "vue-shepherd": "^3.0.0",
+    "vue-tree-chart": "^1.2.9",
+    "vue-tree-color": "^2.3.3",
+    "vue2-org-tree": "^1.3.6",
+    "vue2-verify": "^1.1.5",
+    "vuedraggable": "^2.24.3",
     "vuex": "^3.6.2",
+    "vxe-pc-ui": "^4.3.37",
+    "vxe-table": "^3.16.11",
+    "ws": "^8.18.1",
+    "xe-utils": "^3.7.9",
     "xlsx": "^0.17.5",
     "xlsx-style": "^0.8.13"
   },
@@ -82,16 +131,19 @@
     "compression-webpack-plugin": "^1.1.11",
     "copy-webpack-plugin": "4.5.2",
     "cross-env": "5.2.0",
+    "crypto-js": "^4.2.0",
     "css-loader": "1.0.0",
     "eslint": "4.19.1",
     "eslint-friendly-formatter": "4.0.1",
     "eslint-loader": "2.0.0",
     "eslint-plugin-html": "4.0.5",
-    "file-loader": "1.1.11",
+    "file-loader": "^1.1.11",
     "friendly-errors-webpack-plugin": "1.7.0",
     "hash-sum": "^1.0.2",
     "html-webpack-plugin": "4.0.0-alpha",
     "husky": "0.14.3",
+    "less": "^3.9.0",
+    "less-loader": "^4.1.0",
     "lint-staged": "7.2.2",
     "mini-css-extract-plugin": "0.4.1",
     "node-notifier": "5.2.1",
@@ -119,7 +171,8 @@
     "webpack-bundle-analyzer": "2.13.1",
     "webpack-cli": "3.1.0",
     "webpack-dev-server": "3.1.5",
-    "webpack-merge": "4.1.4"
+    "webpack-merge": "4.1.4",
+    "worker-loader": "^3.0.8"
   },
   "engines": {
     "node": ">= 6.0.0",

+ 1 - 1
src/api/login.js

@@ -1,7 +1,7 @@
 
 import axiosUser from '@/utils/axiosUser'
 import axios from '@/utils/axios'
-import {returnJSEncrypt} from '@/utils/auth'
+import { returnJSEncrypt } from '@/utils/auth'
 
 export function loginByUsername(username, password) {
   const data = {

BIN
src/assets/123.pdf


+ 401 - 0
src/assets/css/base.css

@@ -0,0 +1,401 @@
+body {
+  margin: 0;
+  font-family: Chinese Quote, -apple-system, BlinkMacSystemFont, Segoe UI,
+    PingFang SC, Hiragino Sans GB, Microsoft YaHei, Helvetica Neue, Helvetica,
+    Arial, sans-serif;
+  font-size: 14px;
+  font-variant: tabular-nums;
+  line-height: 1.5;
+  color: rgba(0, 0, 0, 0.65);
+  background-color: #fff;
+}
+
+body,
+html {
+  font-family: sans-serif;
+  line-height: 1.15;
+  -webkit-text-size-adjust: 100%;
+  -ms-text-size-adjust: 100%;
+  -ms-overflow-style: scrollbar;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+
+input::-ms-clear,
+input::-ms-reveal {
+  display: none;
+}
+
+*,
+:after,
+:before {
+  box-sizing: border-box;
+}
+
+@-ms-viewport {
+  width: device-width;
+}
+
+article,
+aside,
+dialog,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section {
+  display: block;
+}
+
+[tabindex="-1"]:focus {
+  outline: none !important;
+}
+
+hr {
+  box-sizing: content-box;
+  height: 0;
+  overflow: visible;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  margin-top: 0;
+  margin-bottom: 0.5em;
+  color: rgba(0, 0, 0, 0.85);
+  font-weight: 500;
+}
+
+p {
+  margin-top: 0;
+  margin-bottom: 1em;
+}
+
+abbr[data-original-title],
+abbr[title] {
+  text-decoration: underline;
+  text-decoration: underline dotted;
+  cursor: help;
+  border-bottom: 0;
+}
+
+address {
+  margin-bottom: 1em;
+  font-style: normal;
+  line-height: inherit;
+}
+
+input[type="number"],
+input[type="password"],
+input[type="text"],
+textarea {
+  appearance: none;
+  -webkit-appearance: none;
+}
+
+dl,
+ol,
+ul {
+  margin-top: 0;
+  margin-bottom: 1em;
+}
+
+ol ol,
+ol ul,
+ul ol,
+ul ul {
+  margin-bottom: 0;
+}
+
+dt {
+  font-weight: 500;
+}
+
+dd {
+  margin-bottom: 0.5em;
+  margin-left: 0;
+}
+
+blockquote {
+  margin: 0 0 1em;
+}
+
+dfn {
+  font-style: italic;
+}
+
+b,
+strong {
+  font-weight: bolder;
+}
+
+small {
+  font-size: 80%;
+}
+
+sub,
+sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline;
+}
+
+sub {
+  bottom: -0.25em;
+}
+
+sup {
+  top: -0.5em;
+}
+
+a {
+  color: #1890ff;
+  background-color: transparent;
+  text-decoration: none;
+  outline: none;
+  cursor: pointer;
+  transition: color 0.3s;
+  -webkit-text-decoration-skip: objects;
+}
+
+a:focus {
+  text-decoration: underline;
+  text-decoration-skip: auto;
+}
+
+a:hover {
+  color: #40a9ff;
+}
+
+a:active {
+  color: #096dd9;
+}
+
+a:active,
+a:hover {
+  outline: 0;
+  text-decoration: none;
+}
+
+code,
+kbd,
+pre,
+samp {
+  font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier,
+    monospace;
+  font-size: 1em;
+}
+
+pre {
+  margin-top: 0;
+  margin-bottom: 1em;
+  overflow: auto;
+}
+
+figure {
+  margin: 0 0 1em;
+}
+
+img {
+  vertical-align: middle;
+  border-style: none;
+}
+
+svg:not(:root) {
+  overflow: hidden;
+}
+
+[role="button"],
+a,
+area,
+button,
+input:not([type="range"]),
+label,
+select,
+summary,
+textarea {
+  touch-action: manipulation;
+}
+
+table {
+  border-collapse: collapse;
+}
+
+caption {
+  padding-top: 0.75em;
+  padding-bottom: 0.3em;
+  color: rgba(0, 0, 0, 0.45);
+  text-align: left;
+  caption-side: bottom;
+}
+
+th {
+  text-align: inherit;
+}
+
+button,
+input,
+optgroup,
+select,
+textarea {
+  margin: 0;
+  font-family: inherit;
+  /* font-size: inherit; */
+  line-height: inherit;
+  color: inherit;
+}
+
+button,
+input {
+  overflow: visible;
+}
+
+button,
+select {
+  text-transform: none;
+}
+
+[type="reset"],
+[type="submit"],
+button,
+html [type="button"] {
+  appearance: button;
+  -webkit-appearance: button;
+}
+
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner,
+button::-moz-focus-inner {
+  padding: 0;
+  border-style: none;
+}
+
+input[type="checkbox"],
+input[type="radio"] {
+  box-sizing: border-box;
+  padding: 0;
+}
+
+input[type="date"],
+input[type="datetime-local"],
+input[type="month"],
+input[type="time"] {
+  appearance: listbox;
+  -webkit-appearance: listbox;
+}
+
+textarea {
+  overflow: auto;
+  resize: vertical;
+}
+
+fieldset {
+  min-width: 0;
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+
+legend {
+  display: block;
+  width: 100%;
+  max-width: 100%;
+  padding: 0;
+  margin-bottom: 0.5em;
+  font-size: 1.5em;
+  line-height: inherit;
+  color: inherit;
+  white-space: normal;
+}
+
+progress {
+  vertical-align: baseline;
+}
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+
+[type="search"] {
+  outline-offset: -2px;
+  appearance: none;
+  -webkit-appearance: none;
+}
+
+[type="search"]::-webkit-search-cancel-button,
+[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+::-webkit-file-upload-button {
+  font: inherit;
+  -webkit-appearance: button;
+}
+
+output {
+  display: inline-block;
+}
+
+summary {
+  display: list-item;
+}
+
+template {
+  display: none;
+}
+
+[hidden] {
+  display: none !important;
+}
+
+mark {
+  padding: 0.2em;
+  background-color: #feffe6;
+}
+
+::selection {
+  background: #1890ff;
+  color: #fff;
+}
+
+.clearfix {
+  zoom: 1;
+}
+
+.clearfix:after,
+.clearfix:before {
+  content: "";
+  display: table;
+}
+
+.clearfix:after {
+  clear: both;
+}
+
+.wrap {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -ms-flex-direction: column;
+  flex-direction: column;
+  height: 100%;
+}
+
+.iconfont {
+  font-family: IconFont !important;
+  font-size: 33px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -webkit-text-stroke-width: 0.2px;
+  -moz-osx-font-smoothing: grayscale;
+}

+ 105 - 0
src/assets/css/override-element-ui.css

@@ -0,0 +1,105 @@
+.el-drawer__header {
+  margin-bottom: 0 !important;
+  padding: 14px 0 14px 20px !important;
+  color: #323232 !important;
+  font-size: 16px !important;
+}
+.el-drawer__header .el-drawer__title {
+  font-size: 16px !important;
+}
+.drawer_content {
+  display: flex !important;
+  flex-direction: column !important;
+  height: 100% !important;
+}
+.drawer_content > div {
+  border-top: 1px solid #f2f2f2 !important;
+}
+.flow-drawer__footer {
+  padding: 10px 30px !important;
+  border-top: 1px solid #f2f2f2 !important;
+}
+
+.flow-drawer__footer .el-button {
+  float: right !important;
+  margin-right: 10px !important;
+}
+
+.el-dialog {
+  width: 520px;
+  border: 1px solid #dde1e5 !important;
+  border-radius: 3px !important;
+}
+
+.el-dialog__header {
+  padding: 0 0 0 20px !important;
+  line-height: 50px !important;
+  height: 50px !important;
+  background: #fff !important;
+  border-bottom: 1px solid #f2f2f2 !important;
+}
+
+.el-dialog__header .el-dialog__title {
+  font-size: 16px !important;
+  line-height: 50px !important;
+  color: #333333 !important;
+}
+
+.el-dialog__header .el-dialog__headerbtn {
+  height: 12px !important;
+  width: 12px !important;
+}
+
+.el-dialog__header .el-icon-close {
+  width: 12px !important;
+  height: 12px !important;
+  float: left !important;
+}
+
+.el-dialog__header .el-icon-close::before {
+  display: block !important;
+  width: 12px !important;
+  height: 12px !important;
+  background: url(~@/assets/images/add-close.png) no-repeat center !important;
+  background-size: 100% 100% !important;
+  content: "" !important;
+}
+.el-drawer__body {
+  padding: 0 !important;
+}
+.el-dialog__footer {
+  border-top: 1px solid #f2f2f2 !important;
+  padding-bottom: 10px !important;
+}
+
+.el-checkbox,
+.el-checkbox__input.is-checked + .el-checkbox__label,
+.el-radio,
+.el-radio__input.is-checked + .el-radio__label,
+.el-dialog__body,
+.el-tree {
+  color: #333 !important;
+}
+
+.el-radio__label,
+.el-checkbox__label {
+  font-size: 12px !important;
+}
+
+.el-timeline {
+  --el-timeline-node-size-normal: 25px !important;
+  --el-timeline-node-size-large: 25px !important;
+}
+.el-timeline-item__node--normal {
+  left: -8px !important;
+}
+.el-timeline-item__node--large {
+  left: -8px !important;
+}
+.el-timeline-item__wrapper {
+  top: -10px !important;
+}
+.el-tabs--border-card {
+  min-width: 800px !important;
+  min-height: 550px !important;
+}

+ 1145 - 0
src/assets/css/workflow.css

@@ -0,0 +1,1145 @@
+.filter-container {
+  padding: 5px 0 10px 0;
+}
+
+.filter-container .el-button,
+.filter-container .el-input,
+.filter-container .el-input__inner {
+  padding: 0 15px;
+  height: 34px;
+  line-height: 34px;
+}
+
+.form-container {
+  margin: auto;
+  background: #fff !important;
+  padding: 30px 15px 15px 15px;
+  text-align: center;
+  max-width: 800px;
+  height: 100%;
+}
+
+.page-close-box {
+  position: absolute;
+  top: -0;
+  right: -0;
+  width: 42px;
+  height: 42px;
+  text-align: center;
+  cursor: pointer;
+  z-index: 999;
+}
+
+.page-close-box img {
+  position: absolute;
+  top: 4px;
+  right: 4px;
+  background-image: url();
+}
+
+.page-close-box::before {
+  position: absolute;
+  top: 0;
+  right: 0;
+  width: 0;
+  height: 0;
+  border: 20px solid #46a6fe;
+  border-color: #46a6fe #46a6fe transparent transparent;
+  content: "";
+}
+
+.flowicon {
+  display: inline-block;
+  font-style: normal;
+  vertical-align: baseline;
+  text-align: center;
+  text-transform: none;
+  line-height: 1;
+  text-rendering: optimizeLegibility;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.flowicon:before {
+  display: block;
+  font-family: flow !important;
+}
+
+.flowicon-close:before {
+  content: url("../images/add-close.png");
+  filter: brightness(0) saturate(100%) invert(0);
+}
+.flowicon-close-circle:before {
+  content: url("../images/cancel.png");
+}
+
+.flowicon-delete:before {
+  content: url("../images/delete.png");
+}
+
+.flowicon-right:before {
+  content: url("../images/right-arrow.png");
+  filter: brightness(0) saturate(100%) invert(0);
+}
+
+.flowicon-left:before {
+  content: url("../images/left-arrow.png");
+}
+.flowicon-exclamation-circle:before {
+  content: url("../images/warning.png");
+}
+.flow-btn {
+  line-height: 1.5;
+  display: inline-block;
+  font-weight: 400;
+  text-align: center;
+  touch-action: manipulation;
+  cursor: pointer;
+  background-image: none;
+  border: 1px solid transparent;
+  white-space: nowrap;
+  padding: 0 15px;
+  font-size: 14px;
+  border-radius: 4px;
+  height: 32px;
+  user-select: none;
+  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  position: relative;
+  color: rgba(0, 0, 0, 0.65);
+  background-color: #fff;
+  border-color: #d9d9d9;
+}
+
+.flow-btn > .flowicon {
+  line-height: 1;
+}
+
+.flow-btn,
+.flow-btn:active,
+.flow-btn:focus {
+  outline: 0;
+}
+
+.flow-btn > a:only-child {
+  color: currentColor;
+}
+
+.flow-btn > a:only-child:after {
+  content: "";
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  background: transparent;
+}
+
+.flow-btn:focus,
+.flow-btn:hover {
+  color: #40a9ff;
+  background-color: #fff;
+  border-color: #40a9ff;
+}
+
+.flow-btn:focus > a:only-child,
+.flow-btn:hover > a:only-child {
+  color: currentColor;
+}
+
+.flow-btn:focus > a:only-child:after,
+.flow-btn:hover > a:only-child:after {
+  content: "";
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  background: transparent;
+}
+
+.flow-btn.active,
+.flow-btn:active {
+  color: #096dd9;
+  background-color: #fff;
+  border-color: #096dd9;
+}
+
+.flow-btn.active > a:only-child,
+.flow-btn:active > a:only-child {
+  color: currentColor;
+}
+
+.flow-btn.active > a:only-child:after,
+.flow-btn:active > a:only-child:after {
+  content: "";
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  background: transparent;
+}
+
+.flow-btn.active,
+.flow-btn:active,
+.flow-btn:focus,
+.flow-btn:hover {
+  background: #fff;
+  text-decoration: none;
+}
+
+.flow-btn > i,
+.flow-btn > span {
+  pointer-events: none;
+}
+
+.flow-btn:before {
+  position: absolute;
+  top: -1px;
+  left: -1px;
+  bottom: -1px;
+  right: -1px;
+  background: #fff;
+  opacity: 0.35;
+  content: "";
+  border-radius: inherit;
+  z-index: 1;
+  transition: opacity 0.2s;
+  pointer-events: none;
+  display: none;
+}
+
+.flow-btn .flowicon {
+  transition: margin-left 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+
+.flow-btn:active > span,
+.flow-btn:focus > span {
+  position: relative;
+}
+
+.flow-btn > .flowicon + span,
+.flow-btn > span + .flowicon {
+  margin-left: 8px;
+}
+
+.my-nav-container {
+  display: inline-block;
+  position: relative;
+}
+
+.my-nav-container .ghost-bar {
+  position: absolute;
+  width: 150px;
+  height: 100%;
+  left: 0;
+  background: #1583f2;
+  -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+
+.my-nav-container .ghost-bar:after {
+  content: "";
+  position: absolute;
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  width: 0;
+  height: 0;
+  border-style: solid;
+  border-width: 0 5px 6px;
+  border-color: transparent transparent #f6f6f6;
+}
+
+.my-nav-item {
+  position: relative;
+  cursor: pointer;
+  display: inline-block;
+  line-height: 60px;
+  width: 150px;
+  text-align: center;
+  white-space: nowrap;
+}
+
+.my-nav-item .order-num {
+  display: inline-block;
+  width: 20px;
+  height: 20px;
+  line-height: 20px;
+  border: 1px solid #fff;
+  border-radius: 50%;
+  margin-right: 6px;
+  -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+
+.my-nav-item.active .order-num {
+  color: #1583f2;
+  background: #fff;
+}
+
+.flow-input {
+  font-family: Chinese Quote, -apple-system, BlinkMacSystemFont, Segoe UI,
+    PingFang SC, Hiragino Sans GB, Microsoft YaHei, Helvetica Neue, Helvetica,
+    Arial, sans-serif;
+  font-variant: tabular-nums;
+  box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  list-style: none;
+  position: relative;
+  display: inline-block;
+  padding: 4px 11px;
+  width: 100%;
+  height: 32px;
+  font-size: 14px;
+  line-height: 1.5;
+  color: rgba(0, 0, 0, 0.65);
+  background-color: #fff;
+  background-image: none;
+  border: 1px solid #d9d9d9;
+  border-radius: 4px;
+  transition: all 0.3s;
+}
+
+.flow-input::-moz-placeholder {
+  color: #bfbfbf;
+  opacity: 1;
+}
+
+.flow-input:-ms-input-placeholder {
+  color: #bfbfbf;
+}
+
+.flow-input::-webkit-input-placeholder {
+  color: #bfbfbf;
+}
+
+.flow-input:focus,
+.flow-input:hover {
+  border-color: #40a9ff;
+  border-right-width: 1px !important;
+}
+
+.flow-input:focus {
+  outline: 0;
+  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
+}
+
+textarea.flow-input {
+  max-width: 100%;
+  height: auto;
+  vertical-align: bottom;
+  transition: all 0.3s, height 0s;
+  min-height: 32px;
+}
+
+.my-nav {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  z-index: 997;
+  width: 100%;
+  height: 60px;
+  font-size: 14px;
+  color: #fff;
+  background: #3296fa;
+  display: flex;
+  align-items: center;
+}
+
+.my-nav > * {
+  flex: 1;
+  width: 100%;
+}
+
+.my-nav .my-nav-left {
+  display: -webkit-box;
+  display: flex;
+  align-items: center;
+}
+
+.my-nav .my-nav-center {
+  flex: none;
+  width: 600px;
+  text-align: center;
+}
+
+.my-nav .my-nav-right {
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
+  text-align: right;
+}
+
+.my-nav .my-nav-back {
+  display: inline-block;
+  width: 60px;
+  height: 60px;
+  font-size: 22px;
+  border-right: 1px solid #1583f2;
+  text-align: center;
+  cursor: pointer;
+}
+
+.my-nav .my-nav-back:hover {
+  background: #5af;
+}
+
+.my-nav .my-nav-back:active {
+  background: #1583f2;
+}
+
+.my-nav .my-nav-back .flowicon {
+  line-height: 60px;
+}
+
+.my-nav .my-nav-title {
+  width: 0;
+  flex: 1;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  padding: 0 15px;
+}
+
+.my-nav a {
+  color: #fff;
+  margin-left: 12px;
+}
+
+.my-nav .button-publish {
+  min-width: 80px;
+  margin-left: 4px;
+  margin-right: 15px;
+  color: #3296fa;
+  border-color: #fff;
+}
+
+.my-nav .button-publish.flow-btn:focus,
+.my-nav .button-publish.flow-btn:hover {
+  color: #3296fa;
+  border-color: #fff;
+  box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.3);
+}
+
+.my-nav .button-publish.flow-btn:active {
+  color: #3296fa;
+  background: #d6eaff;
+  box-shadow: none;
+}
+
+.my-nav .button-preview {
+  min-width: 80px;
+  margin-left: 16px;
+  margin-right: 4px;
+  color: #fff;
+  border-color: #fff;
+  background: transparent;
+}
+
+.my-nav .button-preview.flow-btn:focus,
+.my-nav .button-preview.flow-btn:hover {
+  color: #fff;
+  border-color: #fff;
+  background: #59acfc;
+}
+
+.my-nav .button-preview.flow-btn:active {
+  color: #fff;
+  border-color: #fff;
+  background: #2186ef;
+}
+
+.my-nav-content {
+  position: fixed;
+  top: 60px;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 1;
+  overflow-x: hidden;
+  overflow-y: hidden;
+  padding-bottom: 30px;
+  height: 100%;
+}
+
+.error-modal-desc {
+  font-size: 13px;
+  color: red;
+  line-height: 22px;
+  margin-bottom: 14px;
+}
+
+.error-modal-list {
+  height: 200px;
+  overflow-y: auto;
+  margin-right: -25px;
+  padding-right: 25px;
+}
+
+.error-modal-item {
+  padding: 10px 20px;
+  line-height: 21px;
+  background: #f6f6f6;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 8px;
+  border-radius: 4px;
+}
+
+.error-modal-item-label {
+  flex: none;
+  font-size: 15px;
+  color: rgba(25, 31, 37, 0.56);
+  padding-right: 10px;
+}
+
+.error-modal-item-content {
+  text-align: right;
+  flex: 1;
+  font-size: 13px;
+  color: red;
+}
+
+#body.blur {
+  -webkit-filter: blur(3px);
+  filter: blur(3px);
+}
+
+.zoom {
+  display: flex;
+  position: fixed;
+  -webkit-box-align: center;
+  -ms-flex-align: center;
+  align-items: center;
+  -webkit-box-pack: justify;
+  -ms-flex-pack: justify;
+  justify-content: space-between;
+  height: 40px;
+  /*width: 125px;*/
+  right: 40px;
+  margin-top: 30px;
+  z-index: 10;
+}
+
+.zoom .zoom-in,
+.zoom .zoom-out {
+  width: 30px;
+  height: 30px;
+  background: #fff;
+  color: #c1c1cd;
+  cursor: pointer;
+  background-size: 100%;
+  background-repeat: no-repeat;
+}
+
+.zoom .zoom-out {
+  background-image: url(../images/minus-90-90.png);
+}
+
+.zoom .zoom-out.disabled {
+  opacity: 0.5;
+}
+
+.zoom .zoom-in {
+  background-image: url(../images/plus-90-90.png);
+}
+
+.zoom .zoom-in.disabled {
+  opacity: 0.5;
+}
+
+.zoom-reset {
+  color: #595d62;
+  font-weight: bold;
+  padding: 2px 7px;
+  background: #ffffff;
+  border: 1px solid #e3e4e4;
+  cursor: pointer;
+  margin-left: 10px;
+}
+
+.zoom > span {
+  text-align: center;
+  width: 39px;
+  margin: 0 10px;
+}
+
+.auto-judge:hover .editable-title,
+.node-wrap-box:hover .editable-title {
+  border-bottom: 1px dashed #fff;
+}
+
+.auto-judge:hover .editable-title.editing,
+.node-wrap-box:hover .editable-title.editing {
+  text-decoration: none;
+  border: 1px solid #d9d9d9;
+}
+
+.auto-judge:hover .editable-title {
+  border-color: #15bc83;
+}
+
+.editable-title {
+  line-height: 15px;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  border-bottom: 1px dashed transparent;
+}
+
+.editable-title:before {
+  content: "";
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 40px;
+}
+
+.editable-title:hover {
+  border-bottom: 1px dashed #fff;
+}
+
+.editable-title-input {
+  flex: none;
+  height: 18px;
+  padding-left: 4px;
+  text-indent: 0;
+  font-size: 12px;
+  line-height: 18px;
+  z-index: 1;
+}
+
+.editable-title-input:hover {
+  text-decoration: none;
+}
+
+.flow-btn {
+  position: relative;
+}
+
+.node-wrap-box {
+  display: -webkit-inline-box;
+  display: -ms-inline-flexbox;
+  display: inline-flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -ms-flex-direction: column;
+  flex-direction: column;
+  position: relative;
+  width: 220px;
+  min-height: 72px;
+  -ms-flex-negative: 0;
+  flex-shrink: 0;
+  background: #fff;
+  border-radius: 4px;
+  cursor: pointer;
+}
+
+.node-wrap-box:after {
+  pointer-events: none;
+  content: "";
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  z-index: 2;
+  border-radius: 4px;
+  border: 1px solid transparent;
+  transition: all 0.1s cubic-bezier(0.645, 0.045, 0.355, 1);
+  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.1);
+}
+
+.node-wrap-box.active:after,
+.node-wrap-box:active:after,
+.node-wrap-box:hover:after {
+  border: 1px solid #3296fa;
+  box-shadow: 0 0 6px 0 rgba(50, 150, 250, 0.3);
+}
+
+.node-wrap-box.active .close,
+.node-wrap-box:active .close,
+.node-wrap-box:hover .close {
+  display: block;
+}
+
+.node-wrap-box.error:after {
+  border: 1px solid #f25643;
+  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.1);
+}
+
+.node-wrap-box .title {
+  position: relative;
+  display: flex;
+  align-items: center;
+  padding-left: 16px;
+  padding-right: 30px;
+  width: 100%;
+  height: 24px;
+  line-height: 24px;
+  font-size: 12px;
+  color: #fff;
+  text-align: left;
+  background: #576a95;
+  border-radius: 4px 4px 0 0;
+}
+
+.node-wrap-box .title .iconfont {
+  font-size: 12px;
+  margin-right: 5px;
+}
+
+.node-wrap-box .placeholder {
+  color: #bfbfbf;
+}
+
+.node-wrap-box .close {
+  display: none;
+  position: absolute;
+  right: 10px;
+  top: 50%;
+  transform: translateY(-50%);
+  width: 20px;
+  height: 20px;
+  font-size: 14px;
+  color: #fff;
+  border-radius: 50%;
+  text-align: center;
+  line-height: 20px;
+}
+
+.node-wrap-box .content {
+  position: relative;
+  font-size: 14px;
+  padding: 16px;
+  padding-right: 30px;
+}
+
+.node-wrap-box .content .text {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  display: -webkit-box;
+  -webkit-line-clamp: 3;
+  line-clamp: 3;
+  -webkit-box-orient: vertical;
+}
+
+.node-wrap-box .content .arrow {
+  position: absolute;
+  right: 10px;
+  top: 50%;
+  transform: translateY(-50%);
+  width: 20px;
+  height: 14px;
+  font-size: 14px;
+  color: #979797;
+}
+
+.start-node.node-wrap-box .content .text {
+  display: block;
+  white-space: nowrap;
+}
+
+.node-wrap-box:before {
+  content: "";
+  position: absolute;
+  top: -12px;
+  left: 50%;
+  -webkit-transform: translateX(-50%);
+  transform: translateX(-50%);
+  width: 0;
+  height: 4px;
+  border-style: solid;
+  border-width: 8px 6px 4px;
+  border-color: #cacaca transparent transparent;
+  background: #f5f5f7;
+}
+
+.node-wrap-box.start-node:before {
+  content: none;
+}
+
+.top-left-cover-line {
+  left: -1px;
+}
+
+.top-left-cover-line,
+.top-right-cover-line {
+  position: absolute;
+  height: 8px;
+  width: 50%;
+  background-color: #f5f5f7;
+  top: -4px;
+}
+
+.top-right-cover-line {
+  right: -1px;
+}
+
+.bottom-left-cover-line {
+  left: -1px;
+}
+
+.bottom-left-cover-line,
+.bottom-right-cover-line {
+  position: absolute;
+  height: 8px;
+  width: 50%;
+  background-color: #f5f5f7;
+  bottom: -4px;
+}
+
+.bottom-right-cover-line {
+  right: -1px;
+}
+
+.dingflow-design {
+  width: 100%;
+  background-color: #f5f5f7;
+  overflow: hidden;
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  top: 0;
+  display: inline-flex;
+  flex-direction: column;
+  align-items: center;
+}
+
+.dingflow-design .box-scale {
+  transform: scale(1);
+  display: inline-block;
+  position: relative;
+  width: 100%;
+  padding: 54.5px 0;
+  -webkit-box-align: start;
+  -ms-flex-align: start;
+  align-items: flex-start;
+  -webkit-box-pack: center;
+  -ms-flex-pack: center;
+  justify-content: center;
+  -ms-flex-wrap: wrap;
+  flex-wrap: wrap;
+  min-width: -webkit-min-content;
+  min-width: -moz-min-content;
+  min-width: min-content;
+  background-color: #f5f5f7;
+  /*transform-origin: 50% 0px 0px;*/
+}
+
+.dingflow-design .node-wrap {
+  flex-direction: column;
+  -webkit-box-pack: start;
+  -ms-flex-pack: start;
+  justify-content: flex-start;
+  -webkit-box-align: center;
+  -ms-flex-align: center;
+  align-items: center;
+  -ms-flex-wrap: wrap;
+  flex-wrap: wrap;
+  -webkit-box-flex: 1;
+  -ms-flex-positive: 1;
+  padding: 0 50px;
+  position: relative;
+  z-index: 9999;
+}
+
+.dingflow-design .branch-wrap,
+.dingflow-design .node-wrap {
+  display: inline-flex;
+  width: 100%;
+}
+
+.dingflow-design .branch-box-wrap {
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -ms-flex-direction: column;
+  flex-direction: column;
+  -ms-flex-wrap: wrap;
+  flex-wrap: wrap;
+  -webkit-box-align: center;
+  -ms-flex-align: center;
+  align-items: center;
+  min-height: 270px;
+  width: 100%;
+  -ms-flex-negative: 0;
+  flex-shrink: 0;
+}
+
+.dingflow-design .branch-box {
+  display: flex;
+  overflow: visible;
+  min-height: 180px;
+  height: auto;
+  border-bottom: 2px solid #ccc;
+  border-top: 2px solid #ccc;
+  position: relative;
+  margin-top: 15px;
+}
+
+.dingflow-design .branch-box .col-box {
+  background: #f5f5f7;
+}
+
+.dingflow-design .branch-box .col-box:before {
+  content: "";
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 0;
+  margin: auto;
+  width: 2px;
+  height: 100%;
+  background-color: #cacaca;
+}
+
+.dingflow-design .add-branch {
+  border: none;
+  outline: none;
+  user-select: none;
+  justify-content: center;
+  font-size: 12px;
+  padding: 0 10px;
+  height: 30px;
+  line-height: 30px;
+  border-radius: 15px;
+  color: #3296fa;
+  background: #fff;
+  box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.1);
+  position: absolute;
+  top: -16px;
+  left: 50%;
+  transform: translateX(-50%);
+  transform-origin: center center;
+  cursor: pointer;
+  z-index: 1;
+  display: inline-flex;
+  align-items: center;
+  -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+
+.dingflow-design .add-branch:hover {
+  transform: translateX(-50%) scale(1.1);
+  box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.1);
+}
+
+.dingflow-design .add-branch:active {
+  transform: translateX(-50%);
+  box-shadow: none;
+}
+
+.dingflow-design .col-box {
+  display: inline-flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  flex-direction: column;
+  -webkit-box-align: center;
+  align-items: center;
+  position: relative;
+}
+
+.dingflow-design .condition-node {
+  min-height: 220px;
+}
+
+.dingflow-design .condition-node,
+.dingflow-design .condition-node-box {
+  display: inline-flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  flex-direction: column;
+  -webkit-box-flex: 1;
+}
+
+.dingflow-design .condition-node-box {
+  padding-top: 30px;
+  padding-right: 50px;
+  padding-left: 50px;
+  -webkit-box-pack: center;
+  justify-content: center;
+  -webkit-box-align: center;
+  align-items: center;
+  flex-grow: 1;
+  position: relative;
+}
+
+.dingflow-design .condition-node-box:before {
+  content: "";
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  margin: auto;
+  width: 2px;
+  height: 100%;
+  background-color: #cacaca;
+}
+
+.dingflow-design .auto-judge {
+  position: relative;
+  width: 220px;
+  min-height: 72px;
+  background: #fff;
+  border-radius: 4px;
+  padding: 14px 19px;
+  cursor: pointer;
+}
+
+.dingflow-design .auto-judge:after {
+  pointer-events: none;
+  content: "";
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  z-index: 2;
+  border-radius: 4px;
+  border: 1px solid transparent;
+  transition: all 0.1s cubic-bezier(0.645, 0.045, 0.355, 1);
+  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.1);
+}
+
+.dingflow-design .auto-judge.active:after,
+.dingflow-design .auto-judge:active:after,
+.dingflow-design .auto-judge:hover:after {
+  border: 1px solid #3296fa;
+  box-shadow: 0 0 6px 0 rgba(50, 150, 250, 0.3);
+}
+
+.dingflow-design .auto-judge.active .close,
+.dingflow-design .auto-judge:active .close,
+.dingflow-design .auto-judge:hover .close {
+  display: block;
+}
+
+.dingflow-design .auto-judge.error:after {
+  border: 1px solid #f25643;
+  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.1);
+}
+
+.dingflow-design .auto-judge .title-wrapper {
+  position: relative;
+  font-size: 12px;
+  color: #15bc83;
+  text-align: left;
+  line-height: 16px;
+}
+
+.dingflow-design .auto-judge .title-wrapper .editable-title {
+  display: inline-block;
+  max-width: 120px;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+
+.dingflow-design .auto-judge .title-wrapper .priority-title {
+  float: right;
+  margin-right: 10px;
+  color: rgba(25, 31, 37, 0.56);
+}
+
+.dingflow-design .auto-judge .placeholder {
+  color: #bfbfbf;
+}
+
+.dingflow-design .auto-judge .close {
+  display: none;
+  position: absolute;
+  right: -10px;
+  top: -10px;
+  width: 20px;
+  height: 20px;
+  font-size: 14px;
+  color: rgba(0, 0, 0, 0.25);
+  border-radius: 50%;
+  text-align: center;
+  line-height: 20px;
+  z-index: 2;
+}
+
+.dingflow-design .auto-judge .content {
+  font-size: 14px;
+  color: #191f25;
+  text-align: left;
+  margin-top: 6px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  display: -webkit-box;
+  -webkit-line-clamp: 3;
+  line-clamp: 3;
+  -webkit-box-orient: vertical;
+}
+
+.dingflow-design .auto-judge .sort-left,
+.dingflow-design .auto-judge .sort-right {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  display: none;
+  z-index: 1;
+}
+
+.dingflow-design .auto-judge .sort-left {
+  left: 0;
+  border-right: 1px solid #f6f6f6;
+}
+
+.dingflow-design .auto-judge .sort-right {
+  right: 0;
+  border-left: 1px solid #f6f6f6;
+}
+
+.dingflow-design .auto-judge:hover .sort-left,
+.dingflow-design .auto-judge:hover .sort-right {
+  display: flex;
+  align-items: center;
+}
+
+.dingflow-design .auto-judge .sort-left:hover,
+.dingflow-design .auto-judge .sort-right:hover {
+  background: #efefef;
+}
+
+.dingflow-design .end-node {
+  border-radius: 50%;
+  font-size: 14px;
+  color: rgba(25, 31, 37, 0.4);
+  text-align: left;
+}
+
+.dingflow-design .end-node .end-node-circle {
+  width: 20px;
+  height: 20px;
+  margin: auto;
+  border-radius: 50%;
+  background: #dbdcdc;
+}
+
+.dingflow-design .end-node .end-node-text {
+  margin-top: 5px;
+  text-align: center;
+}
+
+.approval-setting {
+  border-radius: 2px;
+  margin: 20px 0;
+  position: relative;
+  background: #fff;
+}
+
+.flow-btn {
+  position: relative;
+}

BIN
src/assets/excel.jpg


BIN
src/assets/header_bg.png


+ 539 - 0
src/assets/iconfont/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;
+}

+ 1062 - 0
src/assets/iconfont/demo_index.html

@@ -0,0 +1,1062 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8"/>
+  <title>iconfont Demo</title>
+  <link rel="shortcut icon" href="//img.alicdn.com/imgextra/i2/O1CN01ZyAlrn1MwaMhqz36G_!!6000000001499-73-tps-64-64.ico" type="image/x-icon"/>
+  <link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01EYTRnJ297D6vehehJ_!!6000000008020-55-tps-64-64.svg"/>
+  <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>
+  <style>
+    .main .logo {
+      margin-top: 0;
+      height: auto;
+    }
+
+    .main .logo a {
+      display: flex;
+      align-items: center;
+    }
+
+    .main .logo .sub-title {
+      margin-left: 0.5em;
+      font-size: 22px;
+      color: #fff;
+      background: linear-gradient(-45deg, #3967FF, #B500FE);
+      -webkit-background-clip: text;
+      -webkit-text-fill-color: transparent;
+    }
+  </style>
+</head>
+<body>
+  <div class="main">
+    <h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">
+      <img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg">
+      
+    </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=3538338" 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">&#xe61c;</span>
+                <div class="name">iconfont-kefu</div>
+                <div class="code-name">&amp;#xe61c;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe648;</span>
+                <div class="name">BBD密码</div>
+                <div class="code-name">&amp;#xe648;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe636;</span>
+                <div class="name">人力社保</div>
+                <div class="code-name">&amp;#xe636;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe758;</span>
+                <div class="name">部门</div>
+                <div class="code-name">&amp;#xe758;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xec7f;</span>
+                <div class="name">插入图片</div>
+                <div class="code-name">&amp;#xec7f;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe610;</span>
+                <div class="name">考勤管理</div>
+                <div class="code-name">&amp;#xe610;</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">&#xe64b;</span>
+                <div class="name">位置</div>
+                <div class="code-name">&amp;#xe64b;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe966;</span>
+                <div class="name">24gf-phoneBubble</div>
+                <div class="code-name">&amp;#xe966;</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">&#xe61b;</span>
+                <div class="name">会议</div>
+                <div class="code-name">&amp;#xe61b;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe637;</span>
+                <div class="name">加班</div>
+                <div class="code-name">&amp;#xe637;</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">&#xeb66;</span>
+                <div class="name">使用文档</div>
+                <div class="code-name">&amp;#xeb66;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe62e;</span>
+                <div class="name">多选框</div>
+                <div class="code-name">&amp;#xe62e;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe751;</span>
+                <div class="name">单选</div>
+                <div class="code-name">&amp;#xe751;</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">&#xe647;</span>
+                <div class="name">招聘</div>
+                <div class="code-name">&amp;#xe647;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe67d;</span>
+                <div class="name">财务</div>
+                <div class="code-name">&amp;#xe67d;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe887;</span>
+                <div class="name">05采购</div>
+                <div class="code-name">&amp;#xe887;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe68e;</span>
+                <div class="name">住房补贴</div>
+                <div class="code-name">&amp;#xe68e;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe679;</span>
+                <div class="name">我的产品</div>
+                <div class="code-name">&amp;#xe679;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe63b;</span>
+                <div class="name">发票管理</div>
+                <div class="code-name">&amp;#xe63b;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe7e9;</span>
+                <div class="name">工资</div>
+                <div class="code-name">&amp;#xe7e9;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe60c;</span>
+                <div class="name">住房补贴账户</div>
+                <div class="code-name">&amp;#xe60c;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe613;</span>
+                <div class="name">维修</div>
+                <div class="code-name">&amp;#xe613;</div>
+              </li>
+          
+            <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">&#xe603;</span>
+                <div class="name">财务</div>
+                <div class="code-name">&amp;#xe603;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe60d;</span>
+                <div class="name">请假申请</div>
+                <div class="code-name">&amp;#xe60d;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe722;</span>
+                <div class="name">出差</div>
+                <div class="code-name">&amp;#xe722;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe67e;</span>
+                <div class="name">用餐就餐</div>
+                <div class="code-name">&amp;#xe67e;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xea00;</span>
+                <div class="name">地图组织站点,层级,下级,组织架构布局</div>
+                <div class="code-name">&amp;#xea00;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe68a;</span>
+                <div class="name">合同</div>
+                <div class="code-name">&amp;#xe68a;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe6ca;</span>
+                <div class="name">补卡</div>
+                <div class="code-name">&amp;#xe6ca;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe6c7;</span>
+                <div class="name">出差</div>
+                <div class="code-name">&amp;#xe6c7;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe726;</span>
+                <div class="name">报销申请-费用报销申请-02</div>
+                <div class="code-name">&amp;#xe726;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe676;</span>
+                <div class="name">11C分组,组织树</div>
+                <div class="code-name">&amp;#xe676;</div>
+              </li>
+          
+          </ul>
+          <div class="article markdown">
+          <h2 id="unicode-">Unicode 引用</h2>
+          <hr>
+
+          <p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>
+          <ul>
+            <li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
+            <li>默认情况下不支持多色,直接添加多色图标会自动去色。</li>
+          </ul>
+          <blockquote>
+            <p>注意:新版 iconfont 支持两种方式引用多色图标:SVG 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.woff2?t=1658393010708') format('woff2'),
+       url('iconfont.woff?t=1658393010708') format('woff'),
+       url('iconfont.ttf?t=1658393010708') format('truetype');
+}
+</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 icon-iconfontkefu"></span>
+            <div class="name">
+              iconfont-kefu
+            </div>
+            <div class="code-name">.icon-iconfontkefu
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-mima"></span>
+            <div class="name">
+              BBD密码
+            </div>
+            <div class="code-name">.icon-mima
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-renlishebao"></span>
+            <div class="name">
+              人力社保
+            </div>
+            <div class="code-name">.icon-renlishebao
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-bumen"></span>
+            <div class="name">
+              部门
+            </div>
+            <div class="code-name">.icon-bumen
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-charutupian"></span>
+            <div class="name">
+              插入图片
+            </div>
+            <div class="code-name">.icon-charutupian
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-kaoqinguanli"></span>
+            <div class="name">
+              考勤管理
+            </div>
+            <div class="code-name">.icon-kaoqinguanli
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-shenfenzheng"></span>
+            <div class="name">
+              身份证
+            </div>
+            <div class="code-name">.icon-shenfenzheng
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-weizhi"></span>
+            <div class="name">
+              位置
+            </div>
+            <div class="code-name">.icon-weizhi
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-24gf-phoneBubble"></span>
+            <div class="name">
+              24gf-phoneBubble
+            </div>
+            <div class="code-name">.icon-24gf-phoneBubble
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-kaoqin"></span>
+            <div class="name">
+              考勤
+            </div>
+            <div class="code-name">.icon-kaoqin
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-huiyi"></span>
+            <div class="name">
+              会议
+            </div>
+            <div class="code-name">.icon-huiyi
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-jiaban"></span>
+            <div class="name">
+              加班
+            </div>
+            <div class="code-name">.icon-jiaban
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-biaoge"></span>
+            <div class="name">
+              表格
+            </div>
+            <div class="code-name">.icon-biaoge
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-shiyongwendang"></span>
+            <div class="name">
+              使用文档
+            </div>
+            <div class="code-name">.icon-shiyongwendang
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-duoxuankuang"></span>
+            <div class="name">
+              多选框
+            </div>
+            <div class="code-name">.icon-duoxuankuang
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-danxuan"></span>
+            <div class="name">
+              单选
+            </div>
+            <div class="code-name">.icon-danxuan
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-chuzu"></span>
+            <div class="name">
+              出租
+            </div>
+            <div class="code-name">.icon-chuzu
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-zhaopin"></span>
+            <div class="name">
+              招聘
+            </div>
+            <div class="code-name">.icon-zhaopin
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-caiwu"></span>
+            <div class="name">
+              财务
+            </div>
+            <div class="code-name">.icon-caiwu
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-caigou"></span>
+            <div class="name">
+              05采购
+            </div>
+            <div class="code-name">.icon-caigou
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-zhufangbutie"></span>
+            <div class="name">
+              住房补贴
+            </div>
+            <div class="code-name">.icon-zhufangbutie
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-wodechanpin"></span>
+            <div class="name">
+              我的产品
+            </div>
+            <div class="code-name">.icon-wodechanpin
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-fapiaoguanli"></span>
+            <div class="name">
+              发票管理
+            </div>
+            <div class="code-name">.icon-fapiaoguanli
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-gongzi"></span>
+            <div class="name">
+              工资
+            </div>
+            <div class="code-name">.icon-gongzi
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-zhufangbutiezhanghu"></span>
+            <div class="name">
+              住房补贴账户
+            </div>
+            <div class="code-name">.icon-zhufangbutiezhanghu
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-weixiu"></span>
+            <div class="name">
+              维修
+            </div>
+            <div class="code-name">.icon-weixiu
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-yuangonglizhi"></span>
+            <div class="name">
+              员工离职
+            </div>
+            <div class="code-name">.icon-yuangonglizhi
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-zhaopinguanli"></span>
+            <div class="name">
+              招聘管理
+            </div>
+            <div class="code-name">.icon-zhaopinguanli
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-caiwu1"></span>
+            <div class="name">
+              财务
+            </div>
+            <div class="code-name">.icon-caiwu1
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-qingjiashenqing"></span>
+            <div class="name">
+              请假申请
+            </div>
+            <div class="code-name">.icon-qingjiashenqing
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-ziyuan207"></span>
+            <div class="name">
+              出差
+            </div>
+            <div class="code-name">.icon-ziyuan207
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-yongcanjiucan"></span>
+            <div class="name">
+              用餐就餐
+            </div>
+            <div class="code-name">.icon-yongcanjiucan
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-map-site"></span>
+            <div class="name">
+              地图组织站点,层级,下级,组织架构布局
+            </div>
+            <div class="code-name">.icon-map-site
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-hetong"></span>
+            <div class="name">
+              合同
+            </div>
+            <div class="code-name">.icon-hetong
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-buka"></span>
+            <div class="name">
+              补卡
+            </div>
+            <div class="code-name">.icon-buka
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-chucha"></span>
+            <div class="name">
+              出差
+            </div>
+            <div class="code-name">.icon-chucha
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-baoxiaoshenqing-feiyongbaoxiaoshenqing-02"></span>
+            <div class="name">
+              报销申请-费用报销申请-02
+            </div>
+            <div class="code-name">.icon-baoxiaoshenqing-feiyongbaoxiaoshenqing-02
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-a-11Cfenzuzuzhishu"></span>
+            <div class="name">
+              11C分组,组织树
+            </div>
+            <div class="code-name">.icon-a-11Cfenzuzuzhishu
+            </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>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
+          <li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</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 icon-xxx"&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="#icon-iconfontkefu"></use>
+                </svg>
+                <div class="name">iconfont-kefu</div>
+                <div class="code-name">#icon-iconfontkefu</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-mima"></use>
+                </svg>
+                <div class="name">BBD密码</div>
+                <div class="code-name">#icon-mima</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-renlishebao"></use>
+                </svg>
+                <div class="name">人力社保</div>
+                <div class="code-name">#icon-renlishebao</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-bumen"></use>
+                </svg>
+                <div class="name">部门</div>
+                <div class="code-name">#icon-bumen</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-charutupian"></use>
+                </svg>
+                <div class="name">插入图片</div>
+                <div class="code-name">#icon-charutupian</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-kaoqinguanli"></use>
+                </svg>
+                <div class="name">考勤管理</div>
+                <div class="code-name">#icon-kaoqinguanli</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-shenfenzheng"></use>
+                </svg>
+                <div class="name">身份证</div>
+                <div class="code-name">#icon-shenfenzheng</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-weizhi"></use>
+                </svg>
+                <div class="name">位置</div>
+                <div class="code-name">#icon-weizhi</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-24gf-phoneBubble"></use>
+                </svg>
+                <div class="name">24gf-phoneBubble</div>
+                <div class="code-name">#icon-24gf-phoneBubble</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-kaoqin"></use>
+                </svg>
+                <div class="name">考勤</div>
+                <div class="code-name">#icon-kaoqin</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-huiyi"></use>
+                </svg>
+                <div class="name">会议</div>
+                <div class="code-name">#icon-huiyi</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-jiaban"></use>
+                </svg>
+                <div class="name">加班</div>
+                <div class="code-name">#icon-jiaban</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-biaoge"></use>
+                </svg>
+                <div class="name">表格</div>
+                <div class="code-name">#icon-biaoge</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-shiyongwendang"></use>
+                </svg>
+                <div class="name">使用文档</div>
+                <div class="code-name">#icon-shiyongwendang</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-duoxuankuang"></use>
+                </svg>
+                <div class="name">多选框</div>
+                <div class="code-name">#icon-duoxuankuang</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-danxuan"></use>
+                </svg>
+                <div class="name">单选</div>
+                <div class="code-name">#icon-danxuan</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-chuzu"></use>
+                </svg>
+                <div class="name">出租</div>
+                <div class="code-name">#icon-chuzu</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-zhaopin"></use>
+                </svg>
+                <div class="name">招聘</div>
+                <div class="code-name">#icon-zhaopin</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-caiwu"></use>
+                </svg>
+                <div class="name">财务</div>
+                <div class="code-name">#icon-caiwu</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-caigou"></use>
+                </svg>
+                <div class="name">05采购</div>
+                <div class="code-name">#icon-caigou</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-zhufangbutie"></use>
+                </svg>
+                <div class="name">住房补贴</div>
+                <div class="code-name">#icon-zhufangbutie</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-wodechanpin"></use>
+                </svg>
+                <div class="name">我的产品</div>
+                <div class="code-name">#icon-wodechanpin</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-fapiaoguanli"></use>
+                </svg>
+                <div class="name">发票管理</div>
+                <div class="code-name">#icon-fapiaoguanli</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-gongzi"></use>
+                </svg>
+                <div class="name">工资</div>
+                <div class="code-name">#icon-gongzi</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-zhufangbutiezhanghu"></use>
+                </svg>
+                <div class="name">住房补贴账户</div>
+                <div class="code-name">#icon-zhufangbutiezhanghu</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-weixiu"></use>
+                </svg>
+                <div class="name">维修</div>
+                <div class="code-name">#icon-weixiu</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-yuangonglizhi"></use>
+                </svg>
+                <div class="name">员工离职</div>
+                <div class="code-name">#icon-yuangonglizhi</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-zhaopinguanli"></use>
+                </svg>
+                <div class="name">招聘管理</div>
+                <div class="code-name">#icon-zhaopinguanli</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-caiwu1"></use>
+                </svg>
+                <div class="name">财务</div>
+                <div class="code-name">#icon-caiwu1</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-qingjiashenqing"></use>
+                </svg>
+                <div class="name">请假申请</div>
+                <div class="code-name">#icon-qingjiashenqing</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-ziyuan207"></use>
+                </svg>
+                <div class="name">出差</div>
+                <div class="code-name">#icon-ziyuan207</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-yongcanjiucan"></use>
+                </svg>
+                <div class="name">用餐就餐</div>
+                <div class="code-name">#icon-yongcanjiucan</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-map-site"></use>
+                </svg>
+                <div class="name">地图组织站点,层级,下级,组织架构布局</div>
+                <div class="code-name">#icon-map-site</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-hetong"></use>
+                </svg>
+                <div class="name">合同</div>
+                <div class="code-name">#icon-hetong</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-buka"></use>
+                </svg>
+                <div class="name">补卡</div>
+                <div class="code-name">#icon-buka</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-chucha"></use>
+                </svg>
+                <div class="name">出差</div>
+                <div class="code-name">#icon-chucha</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-baoxiaoshenqing-feiyongbaoxiaoshenqing-02"></use>
+                </svg>
+                <div class="name">报销申请-费用报销申请-02</div>
+                <div class="code-name">#icon-baoxiaoshenqing-feiyongbaoxiaoshenqing-02</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-a-11Cfenzuzuzhishu"></use>
+                </svg>
+                <div class="name">11C分组,组织树</div>
+                <div class="code-name">#icon-a-11Cfenzuzuzhishu</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>

+ 168 - 0
src/assets/iconfont/iconfont.css

@@ -0,0 +1,168 @@
+@font-face {
+  font-family: "iconfont"; /* Project id 3538338 */
+  src: url('iconfont.woff2?t=1658393010708') format('woff2'),
+       url('iconfont.woff?t=1658393010708') format('woff'),
+       url('iconfont.ttf?t=1658393010708') format('truetype');
+}
+
+/*.iconfont {*/
+[class^="iconfont"],[class*="iconfont"]{
+  font-family: "iconfont" !important;
+  font-size: 12px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-iconfontkefu:before {
+  content: "\e61c";
+}
+
+.icon-mima:before {
+  content: "\e648";
+}
+
+.icon-renlishebao:before {
+  content: "\e636";
+}
+
+.icon-bumen:before {
+  content: "\e758";
+}
+
+.icon-charutupian:before {
+  content: "\ec7f";
+}
+
+.icon-kaoqinguanli:before {
+  content: "\e610";
+}
+
+.icon-shenfenzheng:before {
+  content: "\e614";
+}
+
+.icon-weizhi:before {
+  content: "\e64b";
+}
+
+.icon-24gf-phoneBubble:before {
+  content: "\e966";
+}
+
+.icon-kaoqin:before {
+  content: "\e643";
+}
+
+.icon-huiyi:before {
+  content: "\e61b";
+}
+
+.icon-jiaban:before {
+  content: "\e637";
+}
+
+.icon-biaoge:before {
+  content: "\e665";
+}
+
+.icon-shiyongwendang:before {
+  content: "\eb66";
+}
+
+.icon-duoxuankuang:before {
+  content: "\e62e";
+}
+
+.icon-danxuan:before {
+  content: "\e751";
+}
+
+.icon-chuzu:before {
+  content: "\e600";
+}
+
+.icon-zhaopin:before {
+  content: "\e647";
+}
+
+.icon-caiwu:before {
+  content: "\e67d";
+}
+
+.icon-caigou:before {
+  content: "\e887";
+}
+
+.icon-zhufangbutie:before {
+  content: "\e68e";
+}
+
+.icon-wodechanpin:before {
+  content: "\e679";
+}
+
+.icon-fapiaoguanli:before {
+  content: "\e63b";
+}
+
+.icon-gongzi:before {
+  content: "\e7e9";
+}
+
+.icon-zhufangbutiezhanghu:before {
+  content: "\e60c";
+}
+
+.icon-weixiu:before {
+  content: "\e613";
+}
+
+.icon-yuangonglizhi:before {
+  content: "\e615";
+}
+
+.icon-zhaopinguanli:before {
+  content: "\e616";
+}
+
+.icon-caiwu1:before {
+  content: "\e603";
+}
+
+.icon-qingjiashenqing:before {
+  content: "\e60d";
+}
+
+.icon-ziyuan207:before {
+  content: "\e722";
+}
+
+.icon-yongcanjiucan:before {
+  content: "\e67e";
+}
+
+.icon-map-site:before {
+  content: "\ea00";
+}
+
+.icon-hetong:before {
+  content: "\e68a";
+}
+
+.icon-buka:before {
+  content: "\e6ca";
+}
+
+.icon-chucha:before {
+  content: "\e6c7";
+}
+
+.icon-baoxiaoshenqing-feiyongbaoxiaoshenqing-02:before {
+  content: "\e726";
+}
+
+.icon-a-11Cfenzuzuzhishu:before {
+  content: "\e676";
+}
+

Plik diff jest za duży
+ 0 - 0
src/assets/iconfont/iconfont.js


+ 268 - 0
src/assets/iconfont/iconfont.json

@@ -0,0 +1,268 @@
+{
+  "id": "3538338",
+  "name": "wflow",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon-",
+  "description": "",
+  "glyphs": [
+    {
+      "icon_id": "807897",
+      "name": "iconfont-kefu",
+      "font_class": "iconfontkefu",
+      "unicode": "e61c",
+      "unicode_decimal": 58908
+    },
+    {
+      "icon_id": "1313126",
+      "name": "BBD密码",
+      "font_class": "mima",
+      "unicode": "e648",
+      "unicode_decimal": 58952
+    },
+    {
+      "icon_id": "2131309",
+      "name": "人力社保",
+      "font_class": "renlishebao",
+      "unicode": "e636",
+      "unicode_decimal": 58934
+    },
+    {
+      "icon_id": "4774868",
+      "name": "部门",
+      "font_class": "bumen",
+      "unicode": "e758",
+      "unicode_decimal": 59224
+    },
+    {
+      "icon_id": "6337457",
+      "name": "插入图片",
+      "font_class": "charutupian",
+      "unicode": "ec7f",
+      "unicode_decimal": 60543
+    },
+    {
+      "icon_id": "2958951",
+      "name": "考勤管理",
+      "font_class": "kaoqinguanli",
+      "unicode": "e610",
+      "unicode_decimal": 58896
+    },
+    {
+      "icon_id": "3007689",
+      "name": "身份证",
+      "font_class": "shenfenzheng",
+      "unicode": "e614",
+      "unicode_decimal": 58900
+    },
+    {
+      "icon_id": "5121522",
+      "name": "位置",
+      "font_class": "weizhi",
+      "unicode": "e64b",
+      "unicode_decimal": 58955
+    },
+    {
+      "icon_id": "7568869",
+      "name": "24gf-phoneBubble",
+      "font_class": "24gf-phoneBubble",
+      "unicode": "e966",
+      "unicode_decimal": 59750
+    },
+    {
+      "icon_id": "11134714",
+      "name": "考勤",
+      "font_class": "kaoqin",
+      "unicode": "e643",
+      "unicode_decimal": 58947
+    },
+    {
+      "icon_id": "15972093",
+      "name": "会议",
+      "font_class": "huiyi",
+      "unicode": "e61b",
+      "unicode_decimal": 58907
+    },
+    {
+      "icon_id": "19883444",
+      "name": "加班",
+      "font_class": "jiaban",
+      "unicode": "e637",
+      "unicode_decimal": 58935
+    },
+    {
+      "icon_id": "1392555",
+      "name": "表格",
+      "font_class": "biaoge",
+      "unicode": "e665",
+      "unicode_decimal": 58981
+    },
+    {
+      "icon_id": "3868276",
+      "name": "使用文档",
+      "font_class": "shiyongwendang",
+      "unicode": "eb66",
+      "unicode_decimal": 60262
+    },
+    {
+      "icon_id": "5881147",
+      "name": "多选框",
+      "font_class": "duoxuankuang",
+      "unicode": "e62e",
+      "unicode_decimal": 58926
+    },
+    {
+      "icon_id": "26323690",
+      "name": "单选",
+      "font_class": "danxuan",
+      "unicode": "e751",
+      "unicode_decimal": 59217
+    },
+    {
+      "icon_id": "5032",
+      "name": "出租",
+      "font_class": "chuzu",
+      "unicode": "e600",
+      "unicode_decimal": 58880
+    },
+    {
+      "icon_id": "1079372",
+      "name": "招聘",
+      "font_class": "zhaopin",
+      "unicode": "e647",
+      "unicode_decimal": 58951
+    },
+    {
+      "icon_id": "1183143",
+      "name": "财务",
+      "font_class": "caiwu",
+      "unicode": "e67d",
+      "unicode_decimal": 59005
+    },
+    {
+      "icon_id": "1727267",
+      "name": "05采购",
+      "font_class": "caigou",
+      "unicode": "e887",
+      "unicode_decimal": 59527
+    },
+    {
+      "icon_id": "1876349",
+      "name": "我的产品",
+      "font_class": "wodechanpin",
+      "unicode": "e679",
+      "unicode_decimal": 59001
+    },
+    {
+      "icon_id": "1977843",
+      "name": "发票管理",
+      "font_class": "fapiaoguanli",
+      "unicode": "e63b",
+      "unicode_decimal": 58939
+    },
+    {
+      "icon_id": "7790995",
+      "name": "工资",
+      "font_class": "gongzi",
+      "unicode": "e7e9",
+      "unicode_decimal": 59369
+    },
+    {
+      "icon_id": "10120009",
+      "name": "住房补贴账户",
+      "font_class": "zhufangbutiezhanghu",
+      "unicode": "e60c",
+      "unicode_decimal": 58892
+    },
+    {
+      "icon_id": "11435446",
+      "name": "维修",
+      "font_class": "weixiu",
+      "unicode": "e613",
+      "unicode_decimal": 58899
+    },
+    {
+      "icon_id": "11435453",
+      "name": "员工离职",
+      "font_class": "yuangonglizhi",
+      "unicode": "e615",
+      "unicode_decimal": 58901
+    },
+    {
+      "icon_id": "11435456",
+      "name": "招聘管理",
+      "font_class": "zhaopinguanli",
+      "unicode": "e616",
+      "unicode_decimal": 58902
+    },
+    {
+      "icon_id": "12911861",
+      "name": "财务",
+      "font_class": "caiwu1",
+      "unicode": "e603",
+      "unicode_decimal": 58883
+    },
+    {
+      "icon_id": "14443545",
+      "name": "请假申请",
+      "font_class": "qingjiashenqing",
+      "unicode": "e60d",
+      "unicode_decimal": 58893
+    },
+    {
+      "icon_id": "14947326",
+      "name": "出差",
+      "font_class": "ziyuan207",
+      "unicode": "e722",
+      "unicode_decimal": 59170
+    },
+    {
+      "icon_id": "17187052",
+      "name": "用餐就餐",
+      "font_class": "yongcanjiucan",
+      "unicode": "e67e",
+      "unicode_decimal": 59006
+    },
+    {
+      "icon_id": "18170995",
+      "name": "地图组织站点,层级,下级,组织架构布局",
+      "font_class": "map-site",
+      "unicode": "ea00",
+      "unicode_decimal": 59904
+    },
+    {
+      "icon_id": "21053836",
+      "name": "合同",
+      "font_class": "hetong",
+      "unicode": "e68a",
+      "unicode_decimal": 59018
+    },
+    {
+      "icon_id": "21159370",
+      "name": "补卡",
+      "font_class": "buka",
+      "unicode": "e6ca",
+      "unicode_decimal": 59082
+    },
+    {
+      "icon_id": "24080655",
+      "name": "出差",
+      "font_class": "chucha",
+      "unicode": "e6c7",
+      "unicode_decimal": 59079
+    },
+    {
+      "icon_id": "24283254",
+      "name": "报销申请-费用报销申请-02",
+      "font_class": "baoxiaoshenqing-feiyongbaoxiaoshenqing-02",
+      "unicode": "e726",
+      "unicode_decimal": 59174
+    },
+    {
+      "icon_id": "29522596",
+      "name": "11C分组,组织树",
+      "font_class": "a-11Cfenzuzuzhishu",
+      "unicode": "e676",
+      "unicode_decimal": 58998
+    }
+  ]
+}

BIN
src/assets/iconfont/iconfont.ttf


BIN
src/assets/iconfont/iconfont.woff


BIN
src/assets/iconfont/iconfont.woff2


BIN
src/assets/images/add-close.png


BIN
src/assets/images/add-close1.png


BIN
src/assets/images/cancel.png


BIN
src/assets/images/check_box.png


BIN
src/assets/images/close-circle.png


BIN
src/assets/images/delete.png


BIN
src/assets/images/left-arrow.png


BIN
src/assets/images/minus-90-90.png


BIN
src/assets/images/plus-90-90.png


BIN
src/assets/images/right-arrow.png


BIN
src/assets/images/warning.png


BIN
src/assets/indicators_template.xlsx


BIN
src/assets/posx.jpg


BIN
src/assets/robot.png


BIN
src/assets/step/add-indicator-tips.png


BIN
src/assets/step/choose-employee-tips.png


BIN
src/assets/step/choose-indicator-tips.png


BIN
src/assets/step/choose-process-tips.png


BIN
src/assets/step/edit-data-tips.png


BIN
src/assets/step/formulaStep/formula1.png


BIN
src/assets/step/formulaStep/formula2-1.png


BIN
src/assets/step/formulaStep/formula2-2.png


BIN
src/assets/step/formulaStep/formula2-3.png


BIN
src/assets/step/formulaStep/formula3-1.png


BIN
src/assets/step/formulaStep/formula3-2.png


BIN
src/assets/step/formulaStep/formula4-1.png


BIN
src/assets/step/formulaStep/formula4-2.png


BIN
src/assets/step/formulaStep/formula4-3.png


BIN
src/assets/step/formulaStep/formula4-4.png


BIN
src/assets/step/formulaStep/formula4-5.png


BIN
src/assets/step/publish-btn-tips.png


BIN
src/assets/step/result-input-handle1.png


BIN
src/assets/step/result-input-handle2.png


BIN
src/assets/step/result-input-handle3.png


BIN
src/assets/step/result-input-handle4.png


BIN
src/assets/step/result-input-handle5.png


BIN
src/assets/step/step.png


BIN
src/assets/step/step1.png


BIN
src/assets/step/target-confirm-handle1.png


BIN
src/assets/step/target-confirm-handle2.png


BIN
src/assets/step/target-confirm-handle3.png


BIN
src/assets/step/target-confirm-handle4.png


BIN
src/assets/step/target-confirm-handle5.png


BIN
src/assets/step/templateDetail/calcMethods.png


BIN
src/assets/step/templateDetail/cc.png


BIN
src/assets/step/templateDetail/flowSetting.png


BIN
src/assets/step/templateDetail/resultInput.png


BIN
src/assets/step/templateDetail/review.png


BIN
src/assets/step/templateDetail/score.png


BIN
src/assets/step/templateDetail/scoreEachOther.png


BIN
src/assets/step/templateDetail/selfScore.png


BIN
src/assets/step/templateDetail/setting-flow-tips.png


BIN
src/assets/step/templateDetail/targetConfirm.png


BIN
src/assets/step/workbench/Snipaste_2025-10-09_10-22-29.png


BIN
src/assets/step/workbench/last-performance.png


BIN
src/assets/step/workbench/mock-data.png


BIN
src/assets/step/workbench/more-target-confirm.png


BIN
src/assets/step/workbench/more.png


BIN
src/assets/step/workbench/old-perfermance.png


BIN
src/assets/step/workbench/performance-detail.png


BIN
src/assets/step/workbench/result-input.png


BIN
src/assets/step/workbench/review-details.png


BIN
src/assets/step/workbench/review-list.png


BIN
src/assets/step/workbench/review.png


BIN
src/assets/step/workbench/score.png


BIN
src/assets/step/workbench/self-score.png


BIN
src/assets/step/workbench/target-confirm.png


BIN
src/assets/targetStep/add-target-dialog.png


BIN
src/assets/targetStep/cycle-list.png


BIN
src/assets/targetStep/dismantling-target.png


BIN
src/assets/targetStep/drawer-box.png


BIN
src/assets/targetStep/message-list.png


BIN
src/assets/targetStep/month-data.png


BIN
src/assets/targetStep/publish-step.png


BIN
src/assets/targetStep/target-step.png


BIN
src/assets/targetStep/task-list.png


+ 14 - 0
src/assets/theme.less

@@ -0,0 +1,14 @@
+//主题定制
+
+@theme-primary: #1890FF; //主题色,应当与element-ui一致
+@theme-danger: #f56c6c; //主题色,应当与element-ui一致
+
+//审批流程节点配色
+@node-root: #576a95; //发起人
+@node-condition: #15bca3; //条件
+@node-cc: #3296fa; //抄送
+@node-concurrent: #718dff; //并行
+@node-approval: #ff943e;  //审批
+@node-delay: #f25643; //延时
+@node-trigger: #47bc82; //触发器
+

+ 2 - 0
src/components/AppealCreate.vue

@@ -15,6 +15,8 @@
     top="1%"
   >
 
+  
+
     <template>
       <el-form v-model="rewriteData" v-loading="loading">
         <el-form-item label="审批人" required>

+ 190 - 0
src/components/ExcelPreview.vue

@@ -0,0 +1,190 @@
+<template>
+    <div>
+        <div class="sheet-tooltip">{{ content }}</div>
+        <div :id="idName" class="sheet-table" style="height: 600px;"></div>
+    </div>
+</template>
+
+<script>
+import LuckyExcel from 'luckyexcel'
+
+export default {
+    name: "ExcelPreview",
+    components: { LuckyExcel },
+    props: {
+        idName: {
+            type: String,
+        },
+        objectURL: {
+            type: String,
+        },
+        headerNum: {
+            type: Number,
+            default() {
+                return 1
+            }
+        },
+        showCommentColumns: {
+            type: Array,
+            default() {
+                return []
+            }
+        }
+    },
+    data() {
+        return {
+            content: ''
+        };
+    },
+    watch: {
+        objectURL(val) {
+            this.handleExcel(val)
+        }
+    },
+    methods: {
+        handleExcel(objectURL) {
+            let me = this
+            LuckyExcel.transformExcelToLuckyByUrl(
+                objectURL,
+                "test3.xlsx",
+                (exportJson, luckysheetfile) => {
+                    console.log('exportJson:', exportJson)
+                    if (exportJson.sheets == null || exportJson.sheets.length == 0) {
+                        alert("文件读取失败!");
+                        return;
+                    }
+                    // 销毁原来的表格
+                    // window.luckysheet.setWorkBookEditMode()
+                    // 重新创建新表格
+                    luckysheet.create({
+                        lang: "zh", // 设定表格语言
+                        defaultColWidth: 150,
+                        container: this.idName, // 设定DOM容器的id
+                        allowHotkey: false, // 禁止快捷键
+                        showtoolbar: false, // 是否显示工具栏
+                        showinfobar: false, // 是否显示顶部信息栏
+                        showstatisticBar: false, // 是否显示底部计数栏
+                        sheetBottomConfig: false, // sheet页下方的添加行按钮和回到顶部按钮配置
+                        allowEdit: false, // 是否允许前台编辑
+                        allowCopy: false, //允许复制
+                        enableAddRow: false, // 是否允许增加行
+                        enableAddCol: false, // 是否允许增加列
+                        sheetFormulaBar: false, // 是否显示公式栏
+                        enableAddBackTop: false, //返回头部按钮
+                        showsheetbar: true, // 是否显示底部sheet页按钮
+                        showsheetbarConfig: { //自定义配置底部sheet页按钮,可以与showsheetbar配合使用,showsheetbarConfig拥有更高的优先级。
+                            add: false, //新增sheet  
+                            menu: false, //sheet管理菜单
+                            sheet: true, //sheet页显示
+                        },
+                        sheetRightClickConfig: { //自定义配置sheet页右击菜单
+                            delete: false, // 删除
+                            copy: true, // 复制
+                            rename: false, //重命名
+                            color: false, //更改颜色
+                            hide: false, //隐藏,取消隐藏
+                            move: false, //向左移,向右移
+                        },
+                        loading: {
+                            image: () => {
+                                return `<svg viewBox="25 25 50 50" class="circular">
+                <circle cx="50" cy="50" r="20" fill="none"></circle>
+                </svg>`
+                            },
+                            imageClass: "loadingAnimation"
+                        },
+                        showConfigWindowResize: false,
+                        data: exportJson.sheets, //表格内容
+                        title: exportJson.info.name, //表格标题
+                        cellRightClickConfig: {
+                            copy: true, // 复制
+                            copyAs: false, // 复制为
+                            paste: false, // 粘贴
+                            insertRow: false, // 插入行
+                            insertColumn: false, // 插入列
+                            deleteRow: false, // 删除选中行
+                            deleteColumn: false, // 删除选中列
+                            deleteCell: false, // 删除单元格
+                            hideRow: false, // 隐藏选中行和显示选中行
+                            hideColumn: false, // 隐藏选中列和显示选中列
+                            rowHeight: false, // 行高
+                            columnWidth: false, // 列宽
+                            clear: false, // 清除内容
+                            matrix: false, // 矩阵操作选区
+                            sort: false, // 排序选区
+                            filter: false, // 筛选选区
+                            chart: false, // 图表生成
+                            image: false, // 插入图片
+                            link: false, // 插入链接
+                            data: false, // 数据验证
+                            cellFormat: false, // 设置单元格格式
+                        },
+                        hook: {
+                            cellRenderBefore: function (cell, postion, sheetFile, ctx) {
+                                if (cell && cell.m) {
+                                    if (!cell.ps && postion.r > me.headerNum - 1 && me.showCommentColumns.includes(postion.c + 1)) {
+                                        cell.tb = 0
+                                        cell.ps = {
+                                            value: cell.m.replace('&#xa;', '')
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    });
+                }
+            );
+        },
+    },
+};
+</script>
+
+<style>
+/* 自定义loading演示样式 */
+@keyframes loading-rotate {
+    0% {
+        transform: rotate(0deg);
+    }
+
+    100% {
+        transform: rotate(360deg);
+    }
+}
+
+@keyframes loading-dash {
+    0% {
+        stroke-dasharray: 1, 200;
+        stroke-dashoffset: 0;
+    }
+
+    50% {
+        stroke-dasharray: 90, 150;
+        stroke-dashoffset: -40px;
+    }
+
+    100% {
+        stroke-dasharray: 90, 150;
+        stroke-dashoffset: -120px;
+    }
+}
+
+.loadingAnimation {
+    width: 3em;
+    height: 3em;
+    animation: loading-rotate 2s linear infinite;
+}
+
+.loadingAnimation circle {
+    animation: loading-dash 1.5s ease-in-out infinite;
+    stroke-dasharray: 90, 150;
+    stroke-dashoffset: 0;
+    stroke-width: 2;
+    stroke: currentColor;
+    stroke-linecap: round;
+}
+
+.sheet-tooltip {
+    position: absolute;
+    z-index: 1000;
+}
+</style>

+ 2 - 2
src/components/PageHead.vue

@@ -19,8 +19,8 @@ export default {
         default:''
       },
       routePush:{
-        type:String,
-        default:null
+        type: String,
+        default: null
       }
     },
   data() {

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików