瀏覽代碼

菜单缓存和评分下一个切换

lvmax 4 月之前
父節點
當前提交
b24c6244bf

+ 219 - 0
package-lock.json

@@ -15,6 +15,7 @@
         "@iconify/iconify": "^3.1.1",
         "@microsoft/fetch-event-source": "^2.0.1",
         "@videojs-player/vue": "^1.0.0",
+        "@vue-office/docx": "^1.6.2",
         "@vue-office/pdf": "^2.0.6",
         "@vueuse/core": "^10.9.0",
         "@wangeditor/editor": "^5.1.23",
@@ -29,6 +30,7 @@
         "crypto-js": "^4.2.0",
         "dayjs": "^1.11.10",
         "diagram-js": "^12.8.0",
+        "doc": "^0.0.3",
         "driver.js": "^1.3.1",
         "echarts": "^5.5.0",
         "echarts-wordcloud": "^2.1.0",
@@ -54,6 +56,7 @@
         "video.js": "^7.21.5",
         "vue": "3.4.21",
         "vue-demi": "^0.14.6",
+        "vue-doc": "^0.1.2",
         "vue-dompurify-html": "^4.1.4",
         "vue-i18n": "9.10.2",
         "vue-pdf": "^4.3.0",
@@ -63,6 +66,7 @@
         "vue3-pdf": "^4.2.6",
         "vuedraggable": "^4.1.0",
         "web-storage-cache": "^1.1.1",
+        "xlsx": "^0.18.5",
         "xml-js": "^1.6.11"
       },
       "devDependencies": {
@@ -5793,6 +5797,22 @@
         "path-browserify": "^1.0.1"
       }
     },
+    "node_modules/@vue-office/docx": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmmirror.com/@vue-office/docx/-/docx-1.6.2.tgz",
+      "integrity": "sha512-OHAoUHeY8nHjhWvwDhlPx+/rmRkxmqLpvPgtfCEOZ4H1c1LCdJ6eDbdV3152ww8dcdZ7fgGQu3fmSSaI7JwdpQ==",
+      "hasInstallScript": true,
+      "peerDependencies": {
+        "@vue/composition-api": "^1.7.1",
+        "vue": "^2.0.0 || >=3.0.0",
+        "vue-demi": "^0.14.6"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@vue-office/pdf": {
       "version": "2.0.6",
       "resolved": "https://registry.npmmirror.com/@vue-office/pdf/-/pdf-2.0.6.tgz",
@@ -6495,6 +6515,14 @@
         "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
       }
     },
+    "node_modules/adler-32": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
+      "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/aes-decrypter": {
       "version": "3.1.3",
       "resolved": "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-3.1.3.tgz",
@@ -7588,6 +7616,18 @@
         "node": ">=6"
       }
     },
+    "node_modules/cfb": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
+      "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
+      "dependencies": {
+        "adler-32": "~1.3.0",
+        "crc-32": "~1.2.0"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/chalk": {
       "version": "5.3.0",
       "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz",
@@ -7871,6 +7911,14 @@
       "integrity": "sha512-HcfnUFJwI2FvH73YWVbbMh7ObWxZiHIycEhv9ZEXy6e8ZKDjtZKbbYFUtsLN46HFXPvU5V2Uvc2d55Z//oFW5A==",
       "deprecated": "This is an accidentally mis-tagged instance of 5.65.7"
     },
+    "node_modules/codepage": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
+      "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/collection-visit": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz",
@@ -8368,6 +8416,17 @@
         "typescript": ">=4"
       }
     },
+    "node_modules/crc-32": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
+      "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
+      "bin": {
+        "crc32": "bin/crc32.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/create-ecdh": {
       "version": "4.0.4",
       "resolved": "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz",
@@ -9305,6 +9364,11 @@
       "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
       "dev": true
     },
+    "node_modules/doc": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmmirror.com/doc/-/doc-0.0.3.tgz",
+      "integrity": "sha512-JbtDy+nCyfZnavUWV9FrDC5RjuCBllkYbf5u6U2WiD5QXO7lu9F4u1hrQveVpnKaf11x4S0bQq3b842VTv12cg=="
+    },
     "node_modules/doctrine": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz",
@@ -11010,6 +11074,14 @@
         "node": ">= 6"
       }
     },
+    "node_modules/frac": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
+      "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/fraction.js": {
       "version": "4.3.7",
       "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz",
@@ -17118,6 +17190,17 @@
       "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
       "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
     },
+    "node_modules/ssf": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
+      "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+      "dependencies": {
+        "frac": "~1.1.2"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/ssr-window": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz",
@@ -19767,6 +19850,19 @@
         }
       }
     },
+    "node_modules/vue-doc": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmmirror.com/vue-doc/-/vue-doc-0.1.2.tgz",
+      "integrity": "sha512-QasB9HfH6ba1JEmBJEZOReoYqG8ol4YR4iN5qf8CzCxkCHgfaGaHL+EYXfhKsC61a+0UST7ceYKwaVbJAppJqg==",
+      "dependencies": {
+        "parse5": "^2.1.5"
+      }
+    },
+    "node_modules/vue-doc/node_modules/parse5": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmmirror.com/parse5/-/parse5-2.2.3.tgz",
+      "integrity": "sha512-yJQdbcT+hCt6HD+BuuUvjHUdNwerQIKSJSm7tXjtp6oIH5Mxbzlt/VIIeWxblsgcDt1+E7kxPeilD5McWswStA=="
+    },
     "node_modules/vue-dompurify-html": {
       "version": "4.1.4",
       "resolved": "https://registry.npmmirror.com/vue-dompurify-html/-/vue-dompurify-html-4.1.4.tgz",
@@ -20868,6 +20964,22 @@
       "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz",
       "integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng=="
     },
+    "node_modules/wmf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
+      "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/word": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
+      "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/word-wrap": {
       "version": "1.2.5",
       "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz",
@@ -21095,6 +21207,26 @@
         "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
       }
     },
+    "node_modules/xlsx": {
+      "version": "0.18.5",
+      "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
+      "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
+      "dependencies": {
+        "adler-32": "~1.3.0",
+        "cfb": "~1.2.1",
+        "codepage": "~1.15.0",
+        "crc-32": "~1.2.1",
+        "ssf": "~0.11.2",
+        "wmf": "~1.0.1",
+        "word": "~0.3.0"
+      },
+      "bin": {
+        "xlsx": "bin/xlsx.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/xml-js": {
       "version": "1.6.11",
       "resolved": "https://registry.npmmirror.com/xml-js/-/xml-js-1.6.11.tgz",
@@ -25120,6 +25252,12 @@
         "path-browserify": "^1.0.1"
       }
     },
+    "@vue-office/docx": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmmirror.com/@vue-office/docx/-/docx-1.6.2.tgz",
+      "integrity": "sha512-OHAoUHeY8nHjhWvwDhlPx+/rmRkxmqLpvPgtfCEOZ4H1c1LCdJ6eDbdV3152ww8dcdZ7fgGQu3fmSSaI7JwdpQ==",
+      "requires": {}
+    },
     "@vue-office/pdf": {
       "version": "2.0.6",
       "resolved": "https://registry.npmmirror.com/@vue-office/pdf/-/pdf-2.0.6.tgz",
@@ -25681,6 +25819,11 @@
       "dev": true,
       "requires": {}
     },
+    "adler-32": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
+      "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A=="
+    },
     "aes-decrypter": {
       "version": "3.1.3",
       "resolved": "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-3.1.3.tgz",
@@ -26554,6 +26697,15 @@
         "simple-get": "^3.0.3"
       }
     },
+    "cfb": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
+      "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
+      "requires": {
+        "adler-32": "~1.3.0",
+        "crc-32": "~1.2.0"
+      }
+    },
     "chalk": {
       "version": "5.3.0",
       "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz",
@@ -26759,6 +26911,11 @@
       "resolved": "https://registry.npmmirror.com/codemirror/-/codemirror-6.65.7.tgz",
       "integrity": "sha512-HcfnUFJwI2FvH73YWVbbMh7ObWxZiHIycEhv9ZEXy6e8ZKDjtZKbbYFUtsLN46HFXPvU5V2Uvc2d55Z//oFW5A=="
     },
+    "codepage": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
+      "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA=="
+    },
     "collection-visit": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz",
@@ -27160,6 +27317,11 @@
         "jiti": "^1.19.1"
       }
     },
+    "crc-32": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
+      "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="
+    },
     "create-ecdh": {
       "version": "4.0.4",
       "resolved": "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz",
@@ -27891,6 +28053,11 @@
       "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
       "dev": true
     },
+    "doc": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmmirror.com/doc/-/doc-0.0.3.tgz",
+      "integrity": "sha512-JbtDy+nCyfZnavUWV9FrDC5RjuCBllkYbf5u6U2WiD5QXO7lu9F4u1hrQveVpnKaf11x4S0bQq3b842VTv12cg=="
+    },
     "doctrine": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz",
@@ -29199,6 +29366,11 @@
         "mime-types": "^2.1.12"
       }
     },
+    "frac": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
+      "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
+    },
     "fraction.js": {
       "version": "4.3.7",
       "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz",
@@ -33838,6 +34010,14 @@
       "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
       "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
     },
+    "ssf": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
+      "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+      "requires": {
+        "frac": "~1.1.2"
+      }
+    },
     "ssr-window": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz",
@@ -35855,6 +36035,21 @@
       "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
       "requires": {}
     },
+    "vue-doc": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmmirror.com/vue-doc/-/vue-doc-0.1.2.tgz",
+      "integrity": "sha512-QasB9HfH6ba1JEmBJEZOReoYqG8ol4YR4iN5qf8CzCxkCHgfaGaHL+EYXfhKsC61a+0UST7ceYKwaVbJAppJqg==",
+      "requires": {
+        "parse5": "^2.1.5"
+      },
+      "dependencies": {
+        "parse5": {
+          "version": "2.2.3",
+          "resolved": "https://registry.npmmirror.com/parse5/-/parse5-2.2.3.tgz",
+          "integrity": "sha512-yJQdbcT+hCt6HD+BuuUvjHUdNwerQIKSJSm7tXjtp6oIH5Mxbzlt/VIIeWxblsgcDt1+E7kxPeilD5McWswStA=="
+        }
+      }
+    },
     "vue-dompurify-html": {
       "version": "4.1.4",
       "resolved": "https://registry.npmmirror.com/vue-dompurify-html/-/vue-dompurify-html-4.1.4.tgz",
@@ -36702,6 +36897,16 @@
       "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz",
       "integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng=="
     },
+    "wmf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
+      "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw=="
+    },
+    "word": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
+      "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
+    },
     "word-wrap": {
       "version": "1.2.5",
       "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz",
@@ -36868,6 +37073,20 @@
         "signal-exit": "^4.0.1"
       }
     },
+    "xlsx": {
+      "version": "0.18.5",
+      "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
+      "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
+      "requires": {
+        "adler-32": "~1.3.0",
+        "cfb": "~1.2.1",
+        "codepage": "~1.15.0",
+        "crc-32": "~1.2.1",
+        "ssf": "~0.11.2",
+        "wmf": "~1.0.1",
+        "word": "~0.3.0"
+      }
+    },
     "xml-js": {
       "version": "1.6.11",
       "resolved": "https://registry.npmmirror.com/xml-js/-/xml-js-1.6.11.tgz",

+ 4 - 0
package.json

@@ -31,6 +31,7 @@
     "@iconify/iconify": "^3.1.1",
     "@microsoft/fetch-event-source": "^2.0.1",
     "@videojs-player/vue": "^1.0.0",
+    "@vue-office/docx": "^1.6.2",
     "@vue-office/pdf": "^2.0.6",
     "@vueuse/core": "^10.9.0",
     "@wangeditor/editor": "^5.1.23",
@@ -45,6 +46,7 @@
     "crypto-js": "^4.2.0",
     "dayjs": "^1.11.10",
     "diagram-js": "^12.8.0",
+    "doc": "^0.0.3",
     "driver.js": "^1.3.1",
     "echarts": "^5.5.0",
     "echarts-wordcloud": "^2.1.0",
@@ -70,6 +72,7 @@
     "video.js": "^7.21.5",
     "vue": "3.4.21",
     "vue-demi": "^0.14.6",
+    "vue-doc": "^0.1.2",
     "vue-dompurify-html": "^4.1.4",
     "vue-i18n": "9.10.2",
     "vue-pdf": "^4.3.0",
@@ -79,6 +82,7 @@
     "vue3-pdf": "^4.2.6",
     "vuedraggable": "^4.1.0",
     "web-storage-cache": "^1.1.1",
+    "xlsx": "^0.18.5",
     "xml-js": "^1.6.11"
   },
   "devDependencies": {

+ 0 - 199
src/api/work/index.vue

@@ -1,199 +0,0 @@
-<template>
-  <ContentWrap>
-    <!-- 搜索工作栏 -->
-    <el-form
-      class="-mb-15px"
-      :model="queryParams"
-      ref="queryFormRef"
-      :inline="true"
-      label-width="68px"
-    >
-      <el-form-item label="作品id" prop="workId">
-        <el-input
-          v-model="queryParams.workId"
-          placeholder="请输入作品id"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
-      <el-form-item label="评分" prop="score">
-        <el-input
-          v-model="queryParams.score"
-          placeholder="请输入评分"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
-      <el-form-item label="创建时间" prop="createTime">
-        <el-date-picker
-          v-model="queryParams.createTime"
-          value-format="YYYY-MM-DD HH:mm:ss"
-          type="daterange"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
-          :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
-          class="!w-220px"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
-        <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
-        <el-button
-          type="primary"
-          plain
-          @click="openForm('create')"
-          v-hasPermi="['work:score:create']"
-        >
-          <Icon icon="ep:plus" class="mr-5px" /> 新增
-        </el-button>
-        <el-button
-          type="success"
-          plain
-          @click="handleExport"
-          :loading="exportLoading"
-          v-hasPermi="['work:score:export']"
-        >
-          <Icon icon="ep:download" class="mr-5px" /> 导出
-        </el-button>
-      </el-form-item>
-    </el-form>
-  </ContentWrap>
-
-  <!-- 列表 -->
-  <ContentWrap>
-    <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
-      <el-table-column label="id" align="center" prop="id" />
-      <el-table-column label="作品id" align="center" prop="workId" />
-      <el-table-column label="评分状态(0未提交)(1已提交)" align="center" prop="status" />
-      <el-table-column label="评分" align="center" prop="score" />
-      <el-table-column
-        label="创建时间"
-        align="center"
-        prop="createTime"
-        :formatter="dateFormatter"
-        width="180px"
-      />
-      <el-table-column label="操作" align="center" min-width="120px">
-        <template #default="scope">
-          <el-button
-            link
-            type="primary"
-            @click="openForm('update', scope.row.id)"
-            v-hasPermi="['work:score:update']"
-          >
-            编辑
-          </el-button>
-          <el-button
-            link
-            type="danger"
-            @click="handleDelete(scope.row.id)"
-            v-hasPermi="['work:score:delete']"
-          >
-            删除
-          </el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <!-- 分页 -->
-    <Pagination
-      :total="total"
-      v-model:page="queryParams.pageNo"
-      v-model:limit="queryParams.pageSize"
-      @pagination="getList"
-    />
-  </ContentWrap>
-
-  <!-- 表单弹窗:添加/修改 -->
-  <ScoreForm ref="formRef" @success="getList" />
-</template>
-
-<script setup lang="ts">
-import { dateFormatter } from '@/utils/formatTime'
-import download from '@/utils/download'
-import { ScoreApi, ScoreVO } from '@/api/work/score'
-import ScoreForm from './ScoreForm.vue'
-
-/** 作品评分 列表 */
-defineOptions({ name: 'Score' })
-
-const message = useMessage() // 消息弹窗
-const { t } = useI18n() // 国际化
-
-const loading = ref(true) // 列表的加载中
-const list = ref<ScoreVO[]>([]) // 列表的数据
-const total = ref(0) // 列表的总页数
-const queryParams = reactive({
-  pageNo: 1,
-  pageSize: 10,
-  workId: undefined,
-  score: undefined,
-  createTime: []
-})
-const queryFormRef = ref() // 搜索的表单
-const exportLoading = ref(false) // 导出的加载中
-
-/** 查询列表 */
-const getList = async () => {
-  loading.value = true
-  try {
-    const data = await ScoreApi.getScorePage(queryParams)
-    list.value = data.list
-    total.value = data.total
-  } finally {
-    loading.value = false
-  }
-}
-
-/** 搜索按钮操作 */
-const handleQuery = () => {
-  queryParams.pageNo = 1
-  getList()
-}
-
-/** 重置按钮操作 */
-const resetQuery = () => {
-  queryFormRef.value.resetFields()
-  handleQuery()
-}
-
-/** 添加/修改操作 */
-const formRef = ref()
-const openForm = (type: string, id?: number) => {
-  formRef.value.open(type, id)
-}
-
-/** 删除按钮操作 */
-const handleDelete = async (id: number) => {
-  try {
-    // 删除的二次确认
-    await message.delConfirm()
-    // 发起删除
-    await ScoreApi.deleteScore(id)
-    message.success(t('common.delSuccess'))
-    // 刷新列表
-    await getList()
-  } catch {}
-}
-
-/** 导出按钮操作 */
-const handleExport = async () => {
-  try {
-    // 导出的二次确认
-    await message.exportConfirm()
-    // 发起导出
-    exportLoading.value = true
-    const data = await ScoreApi.exportScore(queryParams)
-    download.excel(data, '作品评分.xls')
-  } catch {
-  } finally {
-    exportLoading.value = false
-  }
-}
-
-/** 初始化 **/
-onMounted(() => {
-  getList()
-})
-</script>

+ 7 - 2
src/layout/components/Menu/src/components/useRenderMenuItem.tsx

@@ -3,9 +3,11 @@ import { hasOneShowingChild } from '../helper'
 import { isUrl } from '@/utils/is'
 import { useRenderMenuTitle } from './useRenderMenuTitle'
 import { pathResolve } from '@/utils/routerHelper'
+import refreshSelectedTag from "@/layout/components/TagsView/src/TagsView.vue";
+import {useTagsViewStore} from "@/store/modules/tagsView";
 
 const { renderMenuTitle } = useRenderMenuTitle()
-
+const tagsViewStore = useTagsViewStore()
 export const useRenderMenuItem = () =>
   // allRouters: AppRouteRecordRaw[] = [],
   {
@@ -23,8 +25,10 @@ export const useRenderMenuItem = () =>
             !meta?.alwaysShow
           ) {
             return (
+                //lin 2024年10月18日10:37:37 onclick={tagsViewStore.delCachedView()}
               <ElMenuItem
                 index={onlyOneChild ? pathResolve(fullPath, onlyOneChild.path) : fullPath}
+                onclick={tagsViewStore.delCachedView()}
               >
                 {{
                   default: () => renderMenuTitle(onlyOneChild ? onlyOneChild?.meta : meta)
@@ -32,8 +36,9 @@ export const useRenderMenuItem = () =>
               </ElMenuItem>
             )
           } else {
+              //lin 2024年10月18日10:37:37 onclick={tagsViewStore.delCachedView()}
             return (
-              <ElSubMenu index={fullPath}>
+              <ElSubMenu index={fullPath} onclick={tagsViewStore.delCachedView()}>
                 {{
                   title: () => renderMenuTitle(meta),
                   default: () => renderMenuItem(v.children!, fullPath)

+ 2 - 2
src/views/work/score/index.vue

@@ -482,7 +482,7 @@ const returnScope = () => {
 
 /** 下一个 */
 const nextScope = () => {
-  if (indexScore.value === workList.value.length) {
+  if (indexScore.value+1 === workList.value.length) {
     return
   }
   indexScore.value++
@@ -491,7 +491,7 @@ const nextScope = () => {
   formDataScope.value.id = undefined
   getWorkLists()
 }
-/** 下一个 */
+/** 状态获取 */
 const subScoreInfoStatus = () => {
   let j = 0
   for (let i = 0; i < workList.value.length; i++) {

+ 7 - 3
src/views/work/work/index.vue

@@ -243,8 +243,8 @@
         <VueOfficeDocx :src="video.url"/>
       </div>
       <div v-if="video.format==='doc'" style="width:90%;height: 800px;margin: auto">
-<!--        <VueOfficeDoc :src="video.url" class="docx-class"/>-->
-<!--        <iframe :src="video.url" width="100%" height="500px"></iframe>-->
+        <VueOfficeDoc :src="video.url" class="docx-class"/>
+        <iframe :src="video.url" width="100%" height="500px"></iframe>
         <doc-viewer :src="video.url"/>
       </div>
     </div>
@@ -264,7 +264,8 @@ import {ref} from 'vue'
 //引入VueOfficePdf组件
 import VueOfficePddf from '@vue-office/pdf'
 import VueOfficeDocx from '@vue-office/docx'
-// import DocViewer from 'vue-doc-viewer';
+// import DocViewer from 'vue-doc';
+// import * as DOC from 'doc';
 
 const opt = [
   {
@@ -393,6 +394,9 @@ const selectFile2 = (scope) => {
   video.value.url =scope.row.manuscriptAndMaterial;
   const index = video.value.url.lastIndexOf(".")
   video.value.format  = video.value.url.substring(index + 1, video.value.url.length)
+  video.value.url=`https://view.officeapps.live.com/op/embed.aspx?src=${encodeURIComponent(
+    video.value.url
+  )}`
   // alert(video.value.format)
   // video.value.format = "docx"
 }