Tang 4 лет назад
Родитель
Сommit
56626ea6c7

+ 1 - 0
index.html

@@ -8,5 +8,6 @@
   <body>
     <div id="app"></div>
     <!-- built files will be auto injected -->
+    <script src='https://player.polyv.net/script/polyvplayer.min.js'></script>
   </body>
 </html>

+ 593 - 23
package-lock.json

@@ -4,6 +4,36 @@
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
+    "@babel/runtime": {
+      "version": "7.14.6",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz",
+      "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==",
+      "requires": {
+        "regenerator-runtime": "^0.13.4"
+      },
+      "dependencies": {
+        "regenerator-runtime": {
+          "version": "0.13.7",
+          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
+          "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
+        }
+      }
+    },
+    "@riophae/vue-treeselect": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/@riophae/vue-treeselect/-/vue-treeselect-0.4.0.tgz",
+      "integrity": "sha512-J4atYmBqXQmiPFK/0B5sXKjtnGc21mBJEiyKIDZwk0Q9XuynVFX6IJ4EpaLmUgL5Tve7HAS7wkiGGSti6Uaxcg==",
+      "requires": {
+        "@babel/runtime": "^7.3.1",
+        "babel-helper-vue-jsx-merge-props": "^2.0.3",
+        "easings-css": "^1.0.0",
+        "fuzzysearch": "^1.0.3",
+        "is-promise": "^2.1.0",
+        "lodash": "^4.0.0",
+        "material-colors": "^1.2.6",
+        "watch-size": "^2.0.0"
+      }
+    },
     "@types/json-schema": {
       "version": "7.0.6",
       "resolved": "https://registry.npm.taobao.org/@types/json-schema/download/@types/json-schema-7.0.6.tgz",
@@ -16,6 +46,21 @@
       "integrity": "sha1-FZJUFOCtLNdlv+9YhC9+JqesyyQ=",
       "dev": true
     },
+    "@vue/composition-api": {
+      "version": "1.0.0-rc.11",
+      "resolved": "https://registry.npmjs.org/@vue/composition-api/-/composition-api-1.0.0-rc.11.tgz",
+      "integrity": "sha512-rB5cKeNZlHdjEYre2vBzdid+e09Mf2HmMrg31NCT6c1G6bgX1CJ6V8H7owo9+wK/O2YyN9AEkIVLOczP9s0VTQ==",
+      "requires": {
+        "tslib": "^2.2.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+        }
+      }
+    },
     "abbrev": {
       "version": "1.1.1",
       "resolved": "https://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz",
@@ -1588,7 +1633,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npm.taobao.org/call-bind/download/call-bind-1.0.2.tgz",
       "integrity": "sha1-sdTonmiBGcPJqQOtMKuy9qkZvjw=",
-      "dev": true,
       "requires": {
         "function-bind": "^1.1.1",
         "get-intrinsic": "^1.0.2"
@@ -3228,7 +3272,6 @@
       "version": "1.1.1",
       "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz?cache=0&sync_timestamp=1606859714626&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeep-equal%2Fdownload%2Fdeep-equal-1.1.1.tgz",
       "integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=",
-      "dev": true,
       "requires": {
         "is-arguments": "^1.0.4",
         "is-date-object": "^1.0.1",
@@ -3247,7 +3290,6 @@
       "version": "1.1.3",
       "resolved": "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz",
       "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=",
-      "dev": true,
       "requires": {
         "object-keys": "^1.0.12"
       }
@@ -3492,6 +3534,12 @@
         "domelementtype": "1"
       }
     },
+    "domready": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/domready/-/domready-1.0.8.tgz",
+      "integrity": "sha1-kfJS5Ze2Wvd+dFriTdAYXV4m1Yw=",
+      "dev": true
+    },
     "domutils": {
       "version": "1.7.0",
       "resolved": "https://registry.npm.taobao.org/domutils/download/domutils-1.7.0.tgz?cache=0&sync_timestamp=1607393087316&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomutils%2Fdownload%2Fdomutils-1.7.0.tgz",
@@ -3529,6 +3577,11 @@
         "stream-shift": "^1.0.0"
       }
     },
+    "easings-css": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/easings-css/-/easings-css-1.0.0.tgz",
+      "integrity": "sha512-7Uq7NdazNfVtr0RNmPAys8it0zKCuaqxJStYKEl72D3j4gbvXhhaM7iWNbqhA4C94ygCye6VuyhzBRQC4szeBg=="
+    },
     "ecc-jsbn": {
       "version": "0.1.2",
       "resolved": "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz",
@@ -3539,6 +3592,22 @@
         "safer-buffer": "^2.1.0"
       }
     },
+    "echarts": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.1.2.tgz",
+      "integrity": "sha512-okUhO4sw22vwZp+rTPNjd/bvTdpug4K4sHNHyrV8NdAncIX9/AarlolFqtJCAYKGFYhUBNjIWu1EznFrSWTFxg==",
+      "requires": {
+        "tslib": "2.0.3",
+        "zrender": "5.1.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
+          "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
+        }
+      }
+    },
     "ee-first": {
       "version": "1.1.1",
       "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
@@ -4005,8 +4074,7 @@
     "extend": {
       "version": "3.0.2",
       "resolved": "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz",
-      "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=",
-      "dev": true
+      "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo="
     },
     "extend-shallow": {
       "version": "3.0.2",
@@ -4124,6 +4192,11 @@
       "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
       "dev": true
     },
+    "fast-diff": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz",
+      "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig=="
+    },
     "fast-json-stable-stringify": {
       "version": "2.1.0",
       "resolved": "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz",
@@ -4399,8 +4472,12 @@
     "function-bind": {
       "version": "1.1.1",
       "resolved": "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz",
-      "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=",
-      "dev": true
+      "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0="
+    },
+    "fuzzysearch": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/fuzzysearch/-/fuzzysearch-1.0.3.tgz",
+      "integrity": "sha1-3/yA9tawQiPyImqnndGUIxCW0Ag="
     },
     "gauge": {
       "version": "2.7.4",
@@ -4459,7 +4536,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npm.taobao.org/get-intrinsic/download/get-intrinsic-1.0.2.tgz?cache=0&sync_timestamp=1608274321235&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-intrinsic%2Fdownload%2Fget-intrinsic-1.0.2.tgz",
       "integrity": "sha1-aCDaIm5QskiU4IhZRp3Gg2FUXUk=",
-      "dev": true,
       "requires": {
         "function-bind": "^1.1.1",
         "has": "^1.0.3",
@@ -4622,7 +4698,6 @@
       "version": "1.0.3",
       "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz",
       "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=",
-      "dev": true,
       "requires": {
         "function-bind": "^1.1.1"
       }
@@ -4645,8 +4720,7 @@
     "has-symbols": {
       "version": "1.0.1",
       "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz",
-      "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=",
-      "dev": true
+      "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg="
     },
     "has-unicode": {
       "version": "2.0.1",
@@ -5034,8 +5108,7 @@
       "version": "0.5.5",
       "resolved": "https://registry.npm.taobao.org/image-size/download/image-size-0.5.5.tgz?cache=0&sync_timestamp=1603729042810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimage-size%2Fdownload%2Fimage-size-0.5.5.tgz",
       "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "import-cwd": {
       "version": "2.1.0",
@@ -5173,7 +5246,6 @@
       "version": "1.1.0",
       "resolved": "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.1.0.tgz?cache=0&sync_timestamp=1607117337190&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-arguments%2Fdownload%2Fis-arguments-1.1.0.tgz",
       "integrity": "sha1-YjUwMd++4HzrNGVqa95Z7+yujdk=",
-      "dev": true,
       "requires": {
         "call-bind": "^1.0.0"
       }
@@ -5241,8 +5313,7 @@
     "is-date-object": {
       "version": "1.0.2",
       "resolved": "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.2.tgz",
-      "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=",
-      "dev": true
+      "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4="
     },
     "is-descriptor": {
       "version": "0.1.6",
@@ -5360,11 +5431,15 @@
         "isobject": "^3.0.1"
       }
     },
+    "is-promise": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
+      "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
+    },
     "is-regex": {
       "version": "1.1.1",
       "resolved": "https://registry.npm.taobao.org/is-regex/download/is-regex-1.1.1.tgz",
       "integrity": "sha1-xvmKrMVG9s7FRooHt7FTq1ZKV7k=",
-      "dev": true,
       "requires": {
         "has-symbols": "^1.0.1"
       }
@@ -5725,8 +5800,7 @@
     "lodash": {
       "version": "4.17.20",
       "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.20.tgz?cache=0&sync_timestamp=1597336125847&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.20.tgz",
-      "integrity": "sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI=",
-      "dev": true
+      "integrity": "sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI="
     },
     "lodash.camelcase": {
       "version": "4.3.0",
@@ -5832,6 +5906,11 @@
         "object-visit": "^1.0.0"
       }
     },
+    "material-colors": {
+      "version": "1.2.6",
+      "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz",
+      "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg=="
+    },
     "math-expression-evaluator": {
       "version": "1.3.7",
       "resolved": "https://registry.npm.taobao.org/math-expression-evaluator/download/math-expression-evaluator-1.3.7.tgz?cache=0&sync_timestamp=1608424530956&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmath-expression-evaluator%2Fdownload%2Fmath-expression-evaluator-1.3.7.tgz",
@@ -5994,6 +6073,15 @@
       "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
       "dev": true
     },
+    "merge-options": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-1.0.1.tgz",
+      "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==",
+      "dev": true,
+      "requires": {
+        "is-plain-obj": "^1.1"
+      }
+    },
     "methods": {
       "version": "1.1.2",
       "resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz",
@@ -6236,6 +6324,12 @@
         "through2": "^2.0.0"
       }
     },
+    "mitt": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.2.tgz",
+      "integrity": "sha1-OA5hSA1qYVtmDwertg1R4KTkvtY=",
+      "dev": true
+    },
     "mixin-deep": {
       "version": "1.3.2",
       "resolved": "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz",
@@ -6728,7 +6822,6 @@
       "version": "1.1.4",
       "resolved": "https://registry.npm.taobao.org/object-is/download/object-is-1.1.4.tgz?cache=0&sync_timestamp=1606460458259&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-is%2Fdownload%2Fobject-is-1.1.4.tgz",
       "integrity": "sha1-Y9bIPACkP0y8lDTrl1fIpbhWUGg=",
-      "dev": true,
       "requires": {
         "call-bind": "^1.0.0",
         "define-properties": "^1.1.3"
@@ -6737,8 +6830,7 @@
     "object-keys": {
       "version": "1.1.1",
       "resolved": "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz",
-      "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=",
-      "dev": true
+      "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4="
     },
     "object-visit": {
       "version": "1.0.1",
@@ -7003,6 +7095,11 @@
         "no-case": "^2.2.0"
       }
     },
+    "parchment": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz",
+      "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg=="
+    },
     "parse-asn1": {
       "version": "5.1.6",
       "resolved": "https://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.6.tgz?cache=0&sync_timestamp=1597167385396&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-asn1%2Fdownload%2Fparse-asn1-5.1.6.tgz",
@@ -9012,6 +9109,37 @@
         }
       }
     },
+    "postcss-prefix-selector": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/postcss-prefix-selector/-/postcss-prefix-selector-1.9.0.tgz",
+      "integrity": "sha512-tTUHUNP+/Qfgg+fvbljUIeLs1ijICWb8+CT3bZM2joE2pkd+EnuBzSfZNHY2RMmozNRp44yEFv+I+6IIiLcoCg==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      },
+      "dependencies": {
+        "postcss": {
+          "version": "7.0.36",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz",
+          "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
+          "dev": true,
+          "requires": {
+            "chalk": "^2.4.2",
+            "source-map": "^0.6.1",
+            "supports-color": "^6.1.0"
+          }
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
     "postcss-reduce-idents": {
       "version": "2.4.0",
       "resolved": "https://registry.npm.taobao.org/postcss-reduce-idents/download/postcss-reduce-idents-2.4.0.tgz?cache=0&sync_timestamp=1610386864176&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-reduce-idents%2Fdownload%2Fpostcss-reduce-idents-2.4.0.tgz",
@@ -9478,6 +9606,64 @@
         }
       }
     },
+    "posthtml": {
+      "version": "0.9.2",
+      "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.9.2.tgz",
+      "integrity": "sha1-9MBtufZ7Yf0XxOJW5+PZUVv3Jv0=",
+      "dev": true,
+      "requires": {
+        "posthtml-parser": "^0.2.0",
+        "posthtml-render": "^1.0.5"
+      }
+    },
+    "posthtml-parser": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.2.1.tgz",
+      "integrity": "sha1-NdUw3jhnQMK6JP8usvrznM3ycd0=",
+      "dev": true,
+      "requires": {
+        "htmlparser2": "^3.8.3",
+        "isobject": "^2.1.0"
+      },
+      "dependencies": {
+        "isobject": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+          "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+          "dev": true,
+          "requires": {
+            "isarray": "1.0.0"
+          }
+        }
+      }
+    },
+    "posthtml-rename-id": {
+      "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz",
+      "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==",
+      "dev": true,
+      "requires": {
+        "escape-string-regexp": "1.0.5"
+      }
+    },
+    "posthtml-render": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.4.0.tgz",
+      "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==",
+      "dev": true
+    },
+    "posthtml-svg-mode": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz",
+      "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==",
+      "dev": true,
+      "requires": {
+        "merge-options": "1.0.1",
+        "posthtml": "^0.9.2",
+        "posthtml-parser": "^0.2.1",
+        "posthtml-render": "^1.0.6"
+      }
+    },
     "prepend-http": {
       "version": "1.0.4",
       "resolved": "https://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz",
@@ -9641,6 +9827,41 @@
       "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y=",
       "dev": true
     },
+    "quill": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz",
+      "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==",
+      "requires": {
+        "clone": "^2.1.1",
+        "deep-equal": "^1.0.1",
+        "eventemitter3": "^2.0.3",
+        "extend": "^3.0.2",
+        "parchment": "^1.1.4",
+        "quill-delta": "^3.6.2"
+      },
+      "dependencies": {
+        "clone": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+          "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
+        },
+        "eventemitter3": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz",
+          "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo="
+        }
+      }
+    },
+    "quill-delta": {
+      "version": "3.6.3",
+      "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz",
+      "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==",
+      "requires": {
+        "deep-equal": "^1.0.1",
+        "extend": "^3.0.2",
+        "fast-diff": "1.1.2"
+      }
+    },
     "randombytes": {
       "version": "2.1.0",
       "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz",
@@ -9841,7 +10062,6 @@
       "version": "1.3.1",
       "resolved": "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.1.tgz?cache=0&sync_timestamp=1610725785919&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexp.prototype.flags%2Fdownload%2Fregexp.prototype.flags-1.3.1.tgz",
       "integrity": "sha1-fvNSro0VnnWMDq3Kb4/LTu8HviY=",
-      "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
         "define-properties": "^1.1.3"
@@ -9987,6 +10207,11 @@
       "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
       "dev": true
     },
+    "resize-detector": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/resize-detector/-/resize-detector-0.3.0.tgz",
+      "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ=="
+    },
     "resize-observer-polyfill": {
       "version": "1.5.1",
       "resolved": "https://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz",
@@ -11268,6 +11493,296 @@
         "has-flag": "^3.0.0"
       }
     },
+    "svg-baker": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/svg-baker/-/svg-baker-1.7.0.tgz",
+      "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.0",
+        "clone": "^2.1.1",
+        "he": "^1.1.1",
+        "image-size": "^0.5.1",
+        "loader-utils": "^1.1.0",
+        "merge-options": "1.0.1",
+        "micromatch": "3.1.0",
+        "postcss": "^5.2.17",
+        "postcss-prefix-selector": "^1.6.0",
+        "posthtml-rename-id": "^1.0",
+        "posthtml-svg-mode": "^1.0.3",
+        "query-string": "^4.3.2",
+        "traverse": "^0.6.6"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+          "dev": true,
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          }
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        },
+        "clone": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+          "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
+          "dev": true
+        },
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "dev": true,
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "6.0.3",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+              "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+              "dev": true
+            }
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "6.0.3",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+              "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+              "dev": true
+            }
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "6.0.3",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+              "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+              "dev": true
+            }
+          }
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "kind-of": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+          "dev": true
+        },
+        "micromatch": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.0.tgz",
+          "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==",
+          "dev": true,
+          "requires": {
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.2.2",
+            "define-property": "^1.0.0",
+            "extend-shallow": "^2.0.1",
+            "extglob": "^2.0.2",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^5.0.2",
+            "nanomatch": "^1.2.1",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.1"
+          }
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+          "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "dev": true,
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
+        }
+      }
+    },
+    "svg-baker-runtime": {
+      "version": "1.4.7",
+      "resolved": "https://registry.npmjs.org/svg-baker-runtime/-/svg-baker-runtime-1.4.7.tgz",
+      "integrity": "sha512-Zorfwwj5+lWjk/oxwSMsRdS2sPQQdTmmsvaSpzU+i9ZWi3zugHLt6VckWfnswphQP0LmOel3nggpF5nETbt6xw==",
+      "dev": true,
+      "requires": {
+        "deepmerge": "1.3.2",
+        "mitt": "1.1.2",
+        "svg-baker": "^1.7.0"
+      },
+      "dependencies": {
+        "deepmerge": {
+          "version": "1.3.2",
+          "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.3.2.tgz",
+          "integrity": "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA=",
+          "dev": true
+        }
+      }
+    },
+    "svg-sprite-loader": {
+      "version": "6.0.7",
+      "resolved": "https://registry.npmjs.org/svg-sprite-loader/-/svg-sprite-loader-6.0.7.tgz",
+      "integrity": "sha512-ZInQ5c1mqK5MCeYzKX9Ymjo6hq4ly/9koO6+cBJ19Fl87mRuJ1q7rwaWwoa0JkqZcUEa6gtxTaK6gUk74URAvg==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.0",
+        "deepmerge": "1.3.2",
+        "domready": "1.0.8",
+        "escape-string-regexp": "1.0.5",
+        "loader-utils": "^1.1.0",
+        "svg-baker": "^1.5.0",
+        "svg-baker-runtime": "^1.4.7",
+        "url-slug": "2.0.0"
+      },
+      "dependencies": {
+        "deepmerge": {
+          "version": "1.3.2",
+          "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.3.2.tgz",
+          "integrity": "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA=",
+          "dev": true
+        }
+      }
+    },
     "svgo": {
       "version": "0.7.2",
       "resolved": "https://registry.npm.taobao.org/svgo/download/svgo-0.7.2.tgz",
@@ -11430,6 +11945,12 @@
         "punycode": "^2.1.1"
       }
     },
+    "traverse": {
+      "version": "0.6.6",
+      "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
+      "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=",
+      "dev": true
+    },
     "trim-newlines": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/trim-newlines/download/trim-newlines-1.0.0.tgz",
@@ -11599,6 +12120,12 @@
         }
       }
     },
+    "unidecode": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/unidecode/-/unidecode-0.1.8.tgz",
+      "integrity": "sha1-77swFTi8RSRqmsjFWdcvAVMFBT4=",
+      "dev": true
+    },
     "union-value": {
       "version": "1.0.1",
       "resolved": "https://registry.npm.taobao.org/union-value/download/union-value-1.0.1.tgz",
@@ -11766,6 +12293,15 @@
         "requires-port": "^1.0.0"
       }
     },
+    "url-slug": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/url-slug/-/url-slug-2.0.0.tgz",
+      "integrity": "sha1-p4nVrtSZXA2VrzM3etHVxo1NcCc=",
+      "dev": true,
+      "requires": {
+        "unidecode": "0.1.8"
+      }
+    },
     "use": {
       "version": "3.1.1",
       "resolved": "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz",
@@ -11890,6 +12426,20 @@
       "resolved": "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz?cache=0&sync_timestamp=1609359872993&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue%2Fdownload%2Fvue-2.6.12.tgz",
       "integrity": "sha1-9evU+mvShpQD4pqJau1JBEVskSM="
     },
+    "vue-demi": {
+      "version": "0.9.1",
+      "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.9.1.tgz",
+      "integrity": "sha512-7s1lufRD2l369eFWPjgLvhqCRk0XzGWJsQc7K4q+0mZtixyGIvsK1Cg88P4NcaRIEiBuuN4q1NN4SZKFKwQswA=="
+    },
+    "vue-echarts": {
+      "version": "6.0.0-rc.6",
+      "resolved": "https://registry.npmjs.org/vue-echarts/-/vue-echarts-6.0.0-rc.6.tgz",
+      "integrity": "sha512-wvgP77HkK2Cjm4CV/FDbnWQ9UiOvID4ayqpcED/e4MJ3UJO5E8hj8H23CMS7GiNdywBg5GQj1M4TU87zpAX9Qg==",
+      "requires": {
+        "resize-detector": "^0.3.0",
+        "vue-demi": "^0.9.1"
+      }
+    },
     "vue-hot-reload-api": {
       "version": "2.3.4",
       "resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz",
@@ -11991,6 +12541,11 @@
       "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz",
       "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw=="
     },
+    "watch-size": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/watch-size/-/watch-size-2.0.0.tgz",
+      "integrity": "sha512-M92R89dNoTPWyCD+HuUEDdhaDnh9jxPGOwlDc0u51jAgmjUvzqaEMynXSr3BaWs+QdHYk4KzibPy1TFtjLmOZQ=="
+    },
     "watchpack": {
       "version": "1.7.5",
       "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.7.5.tgz?cache=0&sync_timestamp=1607687456328&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack%2Fdownload%2Fwatchpack-1.7.5.tgz",
@@ -12971,6 +13526,21 @@
           "dev": true
         }
       }
+    },
+    "zrender": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.1.1.tgz",
+      "integrity": "sha512-oeWlmUZPQdS9f5hK4pV21tHPqA3wgQ7CkKkw7l0CCBgWlJ/FP+lRgLFtUBW6yam4JX8y9CdHJo1o587VVrbcoQ==",
+      "requires": {
+        "tslib": "2.0.3"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
+          "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
+        }
+      }
     }
   }
 }

+ 5 - 2
package.json

@@ -11,13 +11,16 @@
   },
   "dependencies": {
     "@riophae/vue-treeselect": "^0.4.0",
+    "@vue/composition-api": "^1.0.0-rc.11",
     "axios": "^0.21.1",
+    "echarts": "^5.1.2",
     "element-ui": "^2.15.0",
     "nprogress": "^0.2.0",
+    "quill": "1.3.7",
     "vue": "^2.5.2",
+    "vue-echarts": "^6.0.0-rc.6",
     "vue-router": "^3.0.1",
-    "vuex": "^3.6.2",
-    "quill": "1.3.7"
+    "vuex": "^3.6.2"
   },
   "devDependencies": {
     "autoprefixer": "^7.1.2",

+ 17 - 6
src/api/ossUpload.js

@@ -1,7 +1,7 @@
 import request from '@/utils/request' //引入axios请求及拦截器
 export default {
     //回调
-    uploadFile(url,data) {
+    uploadFile(url, data) {
         return request({
             url: url,
             method: 'post',
@@ -15,11 +15,22 @@ export default {
         return request({
             url: '/aliyun/oss/policy',
             method: 'get',
-            noToken: true,
-            params:data
+            // noToken: true,
+            params: data
+        })
+    },
+    //保利威视频信息管理接口
+    polyvVideo(data) {
+        return request({
+            url: '/polyv/video/' + data,
+            method: 'get',
+        })
+    },
+    //获取保利威视频播放凭证
+    polyvVideoSign(data) {
+        return request({
+            url: '/polyv/video/sign/' + data,
+            method: 'get',
         })
     },
-    getUrl(){
-        return request
-    }
 }

+ 1 - 1
src/api/userInformationManagement.js

@@ -27,7 +27,7 @@ export default {
     //获取用户详细
     obtainUserDetails(data) {
         return request({
-            url: `/system/user/${data}`,
+            url: `/system/user/` + data,
             method: 'get',
         })
     },

+ 1 - 1
src/components/Editor/index.vue

@@ -186,7 +186,7 @@ export default {
             // 获取光标所在位置
             let length = quill.getSelection().index;
             // 插入图片  res.url为服务器返回的图片地址
-            quill.insertEmbed(length, "image", res);
+            quill.insertEmbed(length, "image", this.$methodsTools.splitImgHost(res));
             // 调整光标到最后
             quill.setSelection(length + 1);
         })

+ 52 - 0
src/components/player.vue

@@ -0,0 +1,52 @@
+<template>
+  <div class="player">
+    <div id="player"></div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "Player",
+  props: ["videoDatas"],
+  data() {
+    return {};
+  },
+  created() {},
+  mounted() {
+    this.initVideo();
+  },
+  methods: {
+    initVideo() {
+      let self = this;
+      var player = polyvObject("#player").videoPlayer({
+        wrap: "#player",
+        width: 520, // 宽度
+        height: 480, // 高度
+        forceH5: true,
+        vid: self.videoDatas.vid,
+        playsafe: function (vid, next) {
+          // 向后端发送请求获取加密的token
+          self.$api
+            .polyvVideo(vid)
+            .then((res) => {
+              self.$api.polyvVideoSign(vid).then((result) => {
+                next(result.data);
+              });
+            })
+            .catch((err) => {
+              self.$message.error(err);
+            });
+        },
+      });
+    },
+  },
+  computed: {},
+};
+</script>
+
+<style scoped>
+.player {
+  width: 520px;
+  height: 480px;
+}
+</style>

+ 6 - 4
src/components/tableList.vue

@@ -88,6 +88,7 @@
         align="center"
         type="selection"
         width="55"
+        header-align="center"
       >
       </el-table-column>
       <el-table-column
@@ -95,6 +96,7 @@
         type="index"
         label="序号"
         align="center"
+        header-align="center"
       >
       </el-table-column>
       <template v-for="(item, index) in tableSet">
@@ -112,7 +114,7 @@
               <el-image
                 class="el_images"
                 lazy
-                :src="scope.row[item.prop]"
+                :src="$methodsTools.splitImgHost(scope.row[item.prop])"
                 style="height: 100%"
                 :preview-src-list="scope.row['srcList']"
                 alt="加载失败..."
@@ -192,7 +194,7 @@
             <span
               v-else-if="item.scope === 'jumpPage'"
               @click="jumpPage(scope.row)"
-              style="color: #409eff;cursor:pointer;"
+              style="color: #409eff; cursor: pointer"
               >{{ scope.row[item.prop] }}</span
             >
             <span v-else>{{ scope.row[item.prop] }}</span>
@@ -350,7 +352,7 @@ export default {
         path: "/dictData",
         query: {
           dictId: options.dictId,
-          dictType: options.dictType
+          dictType: options.dictType,
         },
       });
     },
@@ -376,7 +378,7 @@ export default {
       this.initTR();
     },
     load(tree, treeNode, resolve) {
-      this.$emit("load", tree, treeNode,resolve);
+      this.$emit("load", tree, treeNode, resolve);
     },
   },
 };

+ 0 - 0
src/components/topic.vue


+ 4 - 4
src/layout/structure/content/renderPage.vue

@@ -51,18 +51,18 @@ export default {
 }
 .slide-right-enter {
   opacity: 0;
-  transform: translate3d(-50%, 0, 0);
+  transform: translate3d(-35%, 0, 0);
 }
 .slide-right-leave-active {
   opacity: 0;
-  transform: translate3d(50%, 0, 0);
+  transform: translate3d(35%, 0, 0);
 }
 .slide-left-enter {
   opacity: 0;
-  transform: translate3d(50%, 0, 0);
+  transform: translate3d(35%, 0, 0);
 }
 .slide-left-leave-active {
   opacity: 0;
-  transform: translate3d(-50%, 0, 0);
+  transform: translate3d(-35%, 0, 0);
 }
 </style>

+ 6 - 6
src/main.js

@@ -8,16 +8,15 @@ import bus from '@/utils/bus'
 import api from '@/api/api'
 import store from './store'
 import '@/assets/icons' // icon
-
+// import ECharts from "vue-echarts";
+import * as echarts from 'echarts'
 import './layout/permission'
 import upload from '@/utils/uploadFile'
 import RightToolbar from "@/components/RightToolbar"
 import Paginations from "@/components/Paginations";
+import methodsTools from '@/utils/methodsTool'
 import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, download, handleTree } from "@/utils/ruoyi";
-
-
 Vue.config.productionTip = false
-
 Vue.use(ElementUI);
 Vue.prototype.parseTime = parseTime
 Vue.prototype.resetForm = resetForm
@@ -26,11 +25,13 @@ Vue.prototype.selectDictLabel = selectDictLabel
 Vue.prototype.selectDictLabels = selectDictLabels
 Vue.prototype.download = download
 Vue.prototype.handleTree = handleTree
-
 Vue.prototype.$bus = bus
 Vue.prototype.$axios = axios
 Vue.prototype.$api = api
 Vue.prototype.$upload = upload
+Vue.prototype.$methodsTools = methodsTools
+// Vue.component('v-chart', ECharts)//全局注册
+Vue.prototype.$echarts = echarts;
 Vue.component('RightToolbar', RightToolbar)
 Vue.component('Paginations', Paginations)
 Vue.prototype.msgSuccess = function (msg) {
@@ -39,7 +40,6 @@ Vue.prototype.msgSuccess = function (msg) {
 Vue.prototype.msgError = function (msg) {
   this.$message({ showClose: true, message: msg, type: "error" });
 }
-
 Vue.prototype.msgInfo = function (msg) {
   this.$message.info(msg);
 }

+ 19 - 0
src/utils/methodsTool.js

@@ -0,0 +1,19 @@
+const BASE_IMG_URL = 'https://file-dev.xyyxt.net'
+export default {
+	isLogin() {
+		if(uni.getStorageSync('union_id')){
+			return true;
+		}else{
+			return false
+		}
+	},
+	splitImgHost(url) {
+		if(!url){
+			return ''
+		}
+		if(url.indexOf("http") != -1||url.indexOf("https") != -1||url.indexOf("base64") != -1){
+			return url;
+		}
+		return BASE_IMG_URL+ '/' + url
+	},
+}

+ 2 - 1
src/utils/uploadFile.js

@@ -21,7 +21,8 @@ export default {
                 //如果是base64文件,那么直接把base64字符串转成blob对象进行上传就可以了
                 formData.append("file", file);
                 api.uploadFile(ossToken.host, formData).then(resp => {
-                    resolve(ossToken.host + '/' + ossToken.dir)
+                    resolve(ossToken.dir)
+                    // resolve(ossToken.host + '/' + ossToken.dir)
                 }).catch(error => {
                     reject(error)
                 })

+ 108 - 42
src/view/courseQuestionBank/courseManagement/index.vue

@@ -114,7 +114,7 @@
               <div class="imgBox">
                 <label class="imgLabel" for="inputs">
                   <div class="msPhoto" v-if="poppleData.coverUrl">
-                    <img :src="poppleData.coverUrl" alt="图片加载失败" />
+                    <img :src="$methodsTools.splitImgHost(poppleData.coverUrl)" alt="图片加载失败" />
                   </div>
                   <div class="imgbbx" v-else>
                     <p style="margin-top: 49px">
@@ -182,10 +182,10 @@
             <el-table
               ref="pager"
               :data="tableDatas"
-              style="width: 100%"
               row-key="id"
               :load="load"
               lazy
+              :show-overflow-tooltip="true"
               @expand-change="expandChange"
               :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
             >
@@ -229,7 +229,11 @@
                     >
                   </div>
                   <div v-else>
-                    <el-button type="text">视频预览</el-button>
+                    <el-button
+                      type="text"
+                      @click="innerVisibleVideoFun(scope.row)"
+                      >视频预览</el-button
+                    >
                     <el-button type="text" @click="changeList(scope.row, 1)"
                       >修改</el-button
                     >
@@ -240,6 +244,28 @@
                 </template></el-table-column
               >
             </el-table>
+            <el-dialog
+              width="520px"
+              :visible.sync="innerVisibleVideo"
+              append-to-body
+              :show-close="false"
+              :destroy-on-close="true"
+            >
+              <div slot="title" class="hearders">
+                <div class="leftTitle">视频播放器</div>
+                <div class="rightBoxs">
+                  <img
+                    src="@/assets/images/Close@2x.png"
+                    alt=""
+                    @click="closeVideoPop"
+                  />
+                </div>
+              </div>
+              <player-video :videoDatas="videoDatas"></player-video>
+              <span slot="footer" class="dialog-footer">
+                <el-button @click="closeVideoPop">取 消</el-button>
+              </span>
+            </el-dialog>
             <el-dialog
               width="520px"
               :visible.sync="innerVisible"
@@ -300,6 +326,13 @@
               </span>
             </el-dialog>
           </div>
+          <pagination
+            :total="totalChild"
+            :pageSize="pageSizeChild"
+            :currentPage="currentPageChild"
+            @handleSizeChange="handleSizeChangeChild"
+            @handleCurrentChange="handleCurrentChangeChild"
+          />
         </el-col>
       </el-row>
       <div slot="footer" class="dialog-footer">
@@ -322,15 +355,16 @@
 </template>
 
 <script>
+import playerVideo from "@/components/player";
 import searchBox from "@/components/searchBox";
 import tableList from "@/components/tableList";
 import pagination from "@/components/pagination";
 import Editor from "@/components/Editor";
 export default {
-  components: { searchBox, tableList, pagination, Editor },
+  components: { playerVideo, searchBox, tableList, pagination, Editor },
   data() {
     return {
-      uploadStatus: 2,//富文本组件传值
+      uploadStatus: 2, //富文本组件传值
       loading: false, //当前表单加载是否加载动画
       navText: {
         title: "课程合计",
@@ -350,16 +384,22 @@ export default {
           prop: "name",
           placeholder: "输入名称",
         },
+        // {
+        //   label: "视频地址",
+        //   prop: "videoUrl",
+        //   placeholder: "输入视频地址",
+        //   scope: "dis",
+        // },
+        // {
+        //   label: "时长",
+        //   prop: "videoTime",
+        //   placeholder: "输入时长",
+        //   scope: "dis",
+        // },
         {
-          label: "视频地址",
-          prop: "videoUrl",
-          placeholder: "输入视频地址",
-          scope: "dis",
-        },
-        {
-          label: "时长",
-          prop: "videoTime",
-          placeholder: "输入时长",
+          label: "视频ID",
+          prop: "vid",
+          placeholder: "输入视频ID",
           scope: "dis",
         },
         {
@@ -411,6 +451,9 @@ export default {
       total: 0, //一共多少条
       pageSize: 10, //每页多少条数据
       currentPage: 1, //当前页码
+      totalChild: 0, //一共多少条
+      pageSizeChild: 5, //每页多少条数据
+      currentPageChild: 1, //当前页码
       formList: [
         {
           label: "课程名称",
@@ -452,6 +495,8 @@ export default {
       fullscreenChild: false,
       dialogBox: false,
       innerVisible: false,
+      innerVisibleVideo: false, //视频播放器窗口
+      videoDatas: {}, //视频数据
       statusPop: 0,
       beif: "", //备份数据
       activeTableStatus: 1, //步骤条当前状态
@@ -470,13 +515,13 @@ export default {
         },
         {
           label: "视频地址",
-          prop: "videoUrl",
-          width: "240px",
+          prop: "mp4",
+          width: "300px",
         },
         {
           label: "时长(小时)",
-          prop: "videoTime",
-          scope: "time",
+          prop: "duration",
+          // scope: "time",
           width: "120px",
         },
         {
@@ -502,6 +547,15 @@ export default {
     this.initTeacherList();
   },
   methods: {
+    //视频播放器窗口
+    innerVisibleVideoFun(options) {
+      this.videoDatas = options;
+      this.innerVisibleVideo = true;
+    },
+    //视频窗口关闭
+    closeVideoPop() {
+      this.innerVisibleVideo = false;
+    },
     changeTeacherlist(options) {
       console.log(this.poppleData);
     },
@@ -719,7 +773,7 @@ export default {
       var self = this;
       return new Promise((resolve, reject) => {
         this.$upload
-          .upload(this.$refs.file.files[0],int)
+          .upload(this.$refs.file.files[0], int)
           .then((res) => {
             self.poppleData.coverUrl = res;
             resolve();
@@ -812,9 +866,12 @@ export default {
     },
     //获取大章
     getTables(index) {
+      var self = this
       var data = {
-        courseId: index,
+        courseId: this.poppleData.courseId,
         status: "0,1",
+        pageSize: this.pageSizeChild,
+        pageNum: this.currentPageChild,
       };
       var nullBox = [];
       this.$api.inquireCourseListchapter(data).then((res) => {
@@ -825,7 +882,8 @@ export default {
           nullBox.push(item);
         });
         nullBox.sort(this.sortBy("sort", true));
-        this.tableDatas = nullBox;
+        self.tableDatas = nullBox;
+        self.totalChild = res.total
       });
     },
     //删除
@@ -943,6 +1001,15 @@ export default {
       this.currentPage = v;
       this.search();
     },
+    handleSizeChangeChild(v) {
+      this.pageSizeChild = v;
+      this.currentPageChild = 1;
+      this.getTables();
+    },
+    handleCurrentChangeChild(v) {
+      this.currentPageChild = v;
+      this.getTables();
+    },
     //点击多级触发异步
     async load(tree, treeNode, resolve) {
       this.treeObj[tree.chapterId] = { tree, treeNode, resolve };
@@ -967,8 +1034,9 @@ export default {
       var data = {
         chapterId: this.formTableChild.chapterId,
         sectionId: this.formTableChild.sectionId,
-        videoTime: this.formTableChild.videoTime,
-        videoUrl: this.formTableChild.videoUrl,
+        // videoTime: this.formTableChild.videoTime,
+        // videoUrl: this.formTableChild.videoUrl,
+        vid: this.formTableChild.vid,
         name: this.formTableChild.name,
         sort: this.formTableChild.sort,
         status: this.formTableChild.status,
@@ -984,9 +1052,8 @@ export default {
           this.formTableChild.chapterId
         ] = [];
         // 根据我们声明的maps对象,拿到父节点。然后手动进行接口请求,重新进行数据渲染。
-        const { tree, treeNode, resolve } = this.treeObj[
-          this.formTableChild.chapterId
-        ];
+        const { tree, treeNode, resolve } =
+          this.treeObj[this.formTableChild.chapterId];
         this.load(tree, treeNode, resolve);
         this.innerVisible = false;
       });
@@ -1005,9 +1072,7 @@ export default {
       }
       this.innerVisible = true;
     },
-    expandChange() {
-      console.log(111);
-    },
+    expandChange() {},
     submitChild() {
       if (this.formTableChild.name === undefined) {
         this.$message.error("请输入名字");
@@ -1026,12 +1091,12 @@ export default {
         console.log(this.formTableChild);
         if (this.formTableChild.chapterId) {
           //添加下级
-          if (this.formTableChild.videoUrl === undefined) {
-            this.$message.error("请输入视频地址");
-            return;
-          }
-          if (this.formTableChild.videoTime === undefined) {
-            this.$message.error("请输入视频时长(单位:小时)");
+          // if (this.formTableChild.videoUrl === undefined) {
+          //   this.$message.error("请输入视频地址");
+          //   return;
+          // }
+          if (this.formTableChild.vid === undefined) {
+            this.$message.error("请输入视频ID");
             return;
           }
           var data = {
@@ -1039,8 +1104,9 @@ export default {
             name: this.formTableChild.name,
             sort: this.formTableChild.sort,
             status: this.formTableChild.status,
-            videoTime: this.formTableChild.videoTime,
-            videoUrl: this.formTableChild.videoUrl,
+            vid: this.formTableChild.vid,
+            // videoTime: this.formTableChild.videoTime,
+            // videoUrl: this.formTableChild.videoUrl,
           };
           this.$api.addCoursesection(data).then((res) => {
             this.$message.success("添加下级成功");
@@ -1055,9 +1121,8 @@ export default {
                 this.formTableChild.chapterId
               ] = [];
               // 根据我们声明的maps对象,拿到父节点。然后手动进行接口请求,重新进行数据渲染。
-              const { tree, treeNode, resolve } = this.treeObj[
-                this.formTableChild.chapterId
-              ];
+              const { tree, treeNode, resolve } =
+                this.treeObj[this.formTableChild.chapterId];
               this.load(tree, treeNode, resolve);
             }
             this.innerVisible = false;
@@ -1132,8 +1197,9 @@ export default {
           var data = {
             chapterId: rowsz.chapterId,
             sectionId: rowsz.sectionId,
-            videoTime: rowsz.videoTime,
-            videoUrl: rowsz.videoUrl,
+            // videoTime: rowsz.videoTime,
+            // videoUrl: rowsz.videoUrl,
+            vid: rowsz.vid,
             name: rowsz.name,
             sort: rowsz.sort,
             status: -1,

+ 4 - 2
src/view/courseQuestionBank/examQuestionConfiguration/index.vue

@@ -36,7 +36,7 @@
           {{ statusPop === 1 ? "添加" : statusPop === 0 ? "修改" : "详情" }}
         </div>
         <div class="rightBoxs">
-          <img src="@/assets/images/Close@2x.png" alt=""  @click="close"/>
+          <img src="@/assets/images/Close@2x.png" alt="" @click="close" />
         </div>
       </div>
       <div>
@@ -306,7 +306,9 @@ export default {
       var allnum = judgmen + multipleChoice + singleChoice + casest;
       this.$set(this.formtrop, "totalScore", allnum);
     },
-    init() {},
+    init() {
+      this.search();
+    },
     del(row) {
       var data = row;
       data.status = -1;

+ 1 - 1
src/view/courseQuestionBank/famousTeacherManagement/index.vue

@@ -65,7 +65,7 @@
             <div class="imgBox">
               <label class="imgLabel" for="inputs">
                 <div class="msPhoto" v-if="poppleData.avatar">
-                  <img :src="poppleData.avatar" alt="图片加载失败" />
+                  <img :src="$methodsTools.splitImgHost(poppleData.avatar)" alt="图片加载失败" />
                 </div>
                 <div class="imgbbx" v-else>
                   <p style="margin-top: 49px">点击添加或将文件拖拽到这里上传</p>

+ 1 - 1
src/view/courseQuestionBank/keyTestSites/index.vue

@@ -130,7 +130,7 @@
               <div class="imgBox">
                 <label class="imgLabel" for="inputs">
                   <div class="msPhoto" v-if="poppleData.coverUrl">
-                    <img :src="poppleData.coverUrl" alt="图片加载失败" />
+                    <img :src="$methodsTools.splitImgHost(poppleData.coverUrl)" alt="图片加载失败" />
                   </div>
                   <div class="imgbbx" v-else>
                     <p style="margin-top: 49px">

+ 4 - 4
src/view/courseQuestionBank/questionBank/index.vue

@@ -93,7 +93,7 @@
               <div class="imgBoxTopic">
                 <label class="imgLabel" for="inputstopic2">
                   <div class="msPhoto" v-if="dingForm.imgUrl">
-                    <img :src="dingForm.imgUrl" alt="图片加载失败" />
+                    <img :src="$methodsTools.splitImgHost(dingForm.imgUrl)" alt="图片加载失败" />
                   </div>
                   <div class="imgbbx" v-else>
                     <p>点击添加图片</p>
@@ -165,7 +165,7 @@
                     border: 1px dotted #a4a4a4;
                     padding: 4px;
                   "
-                  :src="options.imgUrl"
+                  :src="$methodsTools.splitImgHost(options.imgUrl)"
                   alt=""
                 />
               </div>
@@ -240,7 +240,7 @@
                     <div class="imgBoxTopic">
                       <label class="imgLabel" :for="'inputstopi' + ain">
                         <div class="msPhoto" v-if="ans.imgUrl">
-                          <img :src="ans.imgUrl" alt="图片加载失败" />
+                          <img :src="$methodsTools.splitImgHost(ans.imgUrl)" alt="图片加载失败" />
                         </div>
                         <div class="imgbbx" v-else>
                           <p>点击添加图片</p>
@@ -312,7 +312,7 @@
                           border: 1px dotted #a4a4a4;
                           padding: 4px;
                         "
-                        :src="answerItem.imgUrl"
+                        :src="$methodsTools.splitImgHost(answerItem.imgUrl)"
                         alt=""
                       />
                     </div>

+ 63 - 10
src/view/courseQuestionBank/questionBankManagement/index.vue

@@ -125,7 +125,7 @@
               <div class="imgBox">
                 <label class="imgLabel" for="inputs">
                   <div class="msPhoto" v-if="poppleData.coverUrl">
-                    <img :src="poppleData.coverUrl" alt="图片加载失败" />
+                    <img :src="$methodsTools.splitImgHost(poppleData.coverUrl)" alt="图片加载失败" />
                   </div>
                   <div class="imgbbx" v-else>
                     <p style="margin-top: 49px">
@@ -317,6 +317,13 @@
                 </span>
               </el-dialog>
             </div>
+            <pagination
+              :total="totalChild"
+              :pageSize="pageSizeChild"
+              :currentPage="currentPageChild"
+              @handleSizeChange="handleSizeChangeChild"
+              @handleCurrentChange="handleCurrentChangeChild"
+            />
           </div>
           <div v-if="showTKtype === 2">
             <div>
@@ -429,6 +436,13 @@
                 </span>
               </el-dialog>
             </div>
+            <pagination
+              :total="totalChildTopic"
+              :pageSize="pageSizeChildTopic"
+              :currentPage="currentPageChildTopic"
+              @handleSizeChange="handleSizeChangeChildTopic"
+              @handleCurrentChange="handleCurrentChangeChildTopic"
+            />
           </div>
         </el-col>
       </el-row>
@@ -462,7 +476,7 @@ export default {
   components: { searchBox, tableList, pagination, Editor },
   data() {
     return {
-      uploadStatus: 2,//富文本组件传值
+      uploadStatus: 2, //富文本组件传值
       loading: false, //当前表单加载是否加载动画
       isZTpaper: true, //主讲老师列表是否显示
       navText: {
@@ -550,9 +564,19 @@ export default {
       ], //表头信息
       showTKtype: 0, //1:章节表格 2:试卷表格
       tableData: [], //表单数据
+
       total: 0, //一共多少条
       pageSize: 10, //每页多少条数据
       currentPage: 1, //当前页码
+
+      totalChild: 0, //一共多少条
+      pageSizeChild: 5, //每页多少条数据
+      currentPageChild: 1, //当前页码
+
+      totalChildTopic: 0, //一共多少条
+      pageSizeChildTopic: 5, //每页多少条数据
+      currentPageChildTopic: 1, //当前页码
+
       formList: [
         {
           label: "题库名称",
@@ -1136,10 +1160,13 @@ export default {
     },
     //获取大章
     getZJList(index) {
+      var self = this;
       return new Promise((resolve, reject) => {
         var data = {
           bankId: index,
           status: "0,1",
+          pageSize: this.pageSizeChild,
+          pageNum: this.currentPageChild,
         };
         var nullBox = [];
         this.$api.inquirebankchapterList(data).then((res) => {
@@ -1149,18 +1176,22 @@ export default {
             item.hasChildren = true;
             nullBox.push(item);
           });
-          nullBox.sort(this.sortBy("sort", true));
-          this.tableDatas = nullBox;
+          nullBox.sort(self.sortBy("sort", true));
+          self.tableDatas = nullBox;
+          self.totalChild = res.total;
           resolve();
         });
       });
     },
     //获取试卷
     getPAPERList(index) {
+      var self = this;
       return new Promise((resolve, reject) => {
         var data = {
           bankId: index,
           status: "0,1",
+          pageSize: this.pageSizeChildTopic,
+          pageNum: this.currentPageChildTopic,
         };
         var nullBox = [];
         this.$api.inquirebankexamList(data).then((res) => {
@@ -1170,8 +1201,9 @@ export default {
             item.hasChildren = true;
             nullBox.push(item);
           });
-          nullBox.sort(this.sortBy("sort", true));
-          this.tableDataspaper = nullBox;
+          nullBox.sort(self.sortBy("sort", true));
+          self.tableDataspaper = nullBox;
+          self.totalChildTopic = res.total;
           resolve();
         });
       });
@@ -1180,7 +1212,7 @@ export default {
       var self = this;
       return new Promise((resolve, reject) => {
         this.$upload
-          .upload(this.$refs.file.files[0],int)
+          .upload(this.$refs.file.files[0], int)
           .then((res) => {
             self.poppleData.coverUrl = res;
             resolve();
@@ -1221,7 +1253,7 @@ export default {
             });
         })
         .catch(() => {
-          this.$message.error("删除失败");
+          this.$message("取消删除");
         });
     },
     sortBy(attr, rev) {
@@ -1336,6 +1368,27 @@ export default {
       this.currentPage = v;
       this.search();
     },
+
+    handleSizeChangeChild(v) {
+      this.pageSizeChild = v;
+      this.currentPageChild = 1;
+      this.getZJList(this.poppleData.bankId);
+    },
+    handleCurrentChangeChild(v) {
+      this.currentPageChild = v;
+      this.getZJList(this.poppleData.bankId);
+    },
+
+    handleSizeChangeChildTopic(v) {
+      this.pageSizeChildTopic = v;
+      this.currentPageChildTopic = 1;
+      this.getPAPERList(this.poppleData.bankId);
+    },
+    handleCurrentChangeChildTopic(v) {
+      this.currentPageChildTopic = v;
+      this.getPAPERList(this.poppleData.bankId);
+    },
+
     //点击多级触发异步
     async load(tree, treeNode, resolve) {
       this.treeObj[tree.bankChapterId] = { tree, treeNode, resolve };
@@ -1641,10 +1694,10 @@ export default {
           examId: v.examId,
         };
       }
-      data.typeId = this.poppleData.typeId
+      data.typeId = this.poppleData.typeId;
       this.$router.push({
         path: "/questionBank",
-        query: data
+        query: data,
       });
     },
     //新增题目

+ 80 - 25
src/view/homePage/home.vue

@@ -1,42 +1,97 @@
 <template>
   <div id="home">
-    <div>
-      工作台待开发中...
-    </div>
+    <div
+      style="
+        display: flex;
+        flex-direction: column;
+        width: 100%;
+        align-items: center;
+      "
+    >
+    <div
+      class="my-charts"
+      style="height: 500px; width: 500px"
+      ref="myChart"
+    ></div>
+    <p style="font-size: 28px;">后台项目进度</p></div>
   </div>
 </template>
 
 <script>
 export default {
   data() {
-    return {
-      url: "",
-      numdata: "",
-    };
+    return {};
+  },
+  mounted() {
+    this.drawLine();
   },
   methods: {
-    jumpRouter(){
-      this.$router.push({
-        path:"12312"
-      })
-    },
-    getUserInfo() {
-      console.log(this.$store.getters.userInfo);
-    },
-    upload() {
-      this.$upload
-        .upload(this.$refs.file.files[0])
-        .then((res) => {
-          console.log(res);
-        })
-        .catch((err) => {
-          console.log(err);
-          this.$message.error(err);
-        });
+    drawLine() {
+      // 基于准备好的dom,初始化echarts实例
+      let myChart = this.$echarts.init(this.$refs.myChart);
+      // 绘制图表
+      myChart.setOption({
+        series: [
+          {
+            type: "gauge",
+            progress: {
+              show: true,
+              width: 14,
+            },
+            axisLine: {
+              lineStyle: {
+                width: 14,
+              },
+            },
+            axisTick: {
+              show: false,
+            },
+            splitLine: {
+              length: 15,
+              lineStyle: {
+                width: 2,
+                color: "#999",
+              },
+            },
+            axisLabel: {
+              distance: 25,
+              color: "#999",
+              fontSize: 20,
+            },
+            anchor: {
+              show: true,
+              showAbove: true,
+              size: 21,
+              itemStyle: {
+                borderWidth: 10,
+              },
+            },
+            title: {
+              show: false,
+            },
+            detail: {
+              valueAnimation: true,
+              fontSize: 50,
+              offsetCenter: [0, "70%"],
+            },
+            data: [
+              {
+                value: 60,
+              },
+            ],
+          },
+        ],
+      });
     },
   },
 };
 </script>
 
 <style lang="less" scoped>
+.cals {
+  display: flex;
+  flex-direction: column;
+  width: 100%;
+  align-items: center;
+}
 </style>

+ 2 - 1
src/view/systemSettings/usermanagement/index.vue

@@ -383,7 +383,6 @@ export default {
             deptId: v.deptId,
             userName: v.userName,
             nickName: v.nickName,
-            deptId: v.deptId,
             userId: v.userId,
             password: value,
           };
@@ -443,6 +442,8 @@ export default {
       };
       this.$api.obtainUserList(data).then((res) => {
         this.tableData = res.rows;
+        this.total = res.total
+        this.navText.index = res.total
         res.rows.forEach((item, index) => {
           if (item.dept) {
             this.tableData[index].deptName = item.dept.deptName;