@@ -56,7 +56,9 @@
- 完成(耗时:{{ fileMap.get(item.uid)?.cost || 0 }}秒)
+ 完成(
+ 耗时:{{ fileMap.get(item.uid)?.cost || 0 }}秒,
+ 平均:{{ numeral(fileMap.get(item.uid)?.aspeed || 0).format("0 b") }}/s)
失败(原因:{{ fileMap.get(item.uid)?.error }})
@@ -100,7 +102,7 @@ import { delConfirm } from "@/utils";
import { FileItem, Message, RequestOption, UploadInstance } from "@arco-design/web-vue";
import axios from "axios";
import numeral from "numeral";
-import { getIconnameByMimetype } from "./util";
+import { getIcon } from "./util";
const emit = defineEmits<{
(event: "success", item: FileItem): void;
@@ -117,6 +119,7 @@ const fileMap = reactive<
lastTime: number;
lastLoaded: number;
speed: number;
+ aspeed: number;
cost: number;
error: string;
} | null
@@ -242,6 +245,7 @@ const upload = (option: RequestOption) => {
lastLoaded: 0,
cost: 0,
speed: 0,
+ aspeed: 0,
error: "网络异常",
});
}
@@ -258,6 +262,7 @@ const upload = (option: RequestOption) => {
const nowTime = Date.now();
const diff = (e.loaded - lastLoaded) / (nowTime - lastTime);
const speed = Math.floor(diff * 1000);
+ item.aspeed = (item.speed + speed) / 2
item.speed = speed;
item.lastLoaded = e.loaded;
item.lastTime = nowTime;
diff --git a/src/pages/post/media/components/util.ts b/src/pages/post/media/components/util.ts
index bc90fb4..0c3b874 100644
--- a/src/pages/post/media/components/util.ts
+++ b/src/pages/post/media/components/util.ts
@@ -7,14 +7,26 @@ const typeIconMap: Record = {
unknown: "icon-park-outline-file-question",
};
-const imageIconMap: Record = {
- jpg: "icon-park-outline-file-jpg",
- png: "icon-park-outline-file-jpg",
-};
-
function getIconnameByMimetype(mimetype: string) {
const [type, subtype] = mimetype.split("/");
return typeIconMap[type] || typeIconMap.unknown;
}
-export { getIconnameByMimetype };
+function getIcon(mimetype: string) {
+ if (mimetype.startsWith("image")) {
+ return "icon-fmt-png";
+ }
+ if (mimetype.startsWith("video")) {
+ return "icon-fmt-video";
+ }
+ if (mimetype.startsWith("text")) {
+ return "icon-fmt-txt";
+ }
+ if (mimetype.startsWith("audio")) {
+ return "icon-fmt-mp";
+ }
+ return "icon-fmt-visio";
+}
+
+export { getIcon, getIconnameByMimetype };
+
diff --git a/src/pages/post/media/index.vue b/src/pages/post/media/index.vue
index 30eb056..c53018f 100644
--- a/src/pages/post/media/index.vue
+++ b/src/pages/post/media/index.vue
@@ -21,10 +21,10 @@
import { FileCategory, api } from "@/api";
import { createColumn, updateColumn, useAniTable } from "@/components";
import { delConfirm } from "@/utils";
+import { Message } from "@arco-design/web-vue";
import numeral from "numeral";
import AniGroup from "./components/group.vue";
import AniUpload from "./components/upload.vue";
-import { Message } from "@arco-design/web-vue";
const visible = ref(false);
const image = ref("");
@@ -190,7 +190,7 @@ const [fileTable, fileCtx] = useAniTable({
{
"meta": {
- "sort": 10304,
+ "sort": 10305,
"title": "素材管理",
"icon": "icon-park-outline-movie-board"
}
diff --git a/src/pages/post/post/index.vue b/src/pages/post/post/index.vue
index 2d2321f..4e96d28 100644
--- a/src/pages/post/post/index.vue
+++ b/src/pages/post/post/index.vue
@@ -62,7 +62,7 @@
{
"meta": {
- "sort": 10300,
+ "sort": 10301,
"title": "文章管理",
"icon": "icon-park-outline-editor"
}
diff --git a/tsconfig.node.json b/tsconfig.node.json
index be9f0a4..e2395ff 100644
--- a/tsconfig.node.json
+++ b/tsconfig.node.json
@@ -10,6 +10,7 @@
"vite.config.ts",
"scripts/vite/**/*.ts",
"scripts/vite/file.json",
+ "scripts/vite/fmt.json",
"package.json",
"src/types/env.d.ts"
]
diff --git a/vite.config.ts b/vite.config.ts
index e0f1030..c0305f1 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -10,6 +10,7 @@ import { defineConfig, loadEnv } from "vite";
import Page from "vite-plugin-pages";
import { arcoToUnoColor } from "./scripts/vite/color";
import iconFile from "./scripts/vite/file.json";
+import iconFmt from "./scripts/vite/fmt.json";
import plugin from "./scripts/vite/plugin";
/**
@@ -83,6 +84,7 @@ export default defineConfig(({ mode }) => {
prefix: "",
collections: {
"icon-file": iconFile,
+ "icon-fmt": iconFmt,
},
}),
],