diff --git a/src/assets/imgs/no-items-tip.png b/src/assets/imgs/no-items-tip.png
new file mode 100644
index 00000000..816fbf0d
Binary files /dev/null and b/src/assets/imgs/no-items-tip.png differ
diff --git a/src/assets/svg-icon/file-css.svg b/src/assets/svg-icon/file-css.svg
new file mode 100644
index 00000000..254877b5
--- /dev/null
+++ b/src/assets/svg-icon/file-css.svg
@@ -0,0 +1,14 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icon/file-css2.svg b/src/assets/svg-icon/file-css2.svg
new file mode 100644
index 00000000..990638a3
--- /dev/null
+++ b/src/assets/svg-icon/file-css2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icon/file-dir.svg b/src/assets/svg-icon/file-dir.svg
new file mode 100644
index 00000000..04daada7
--- /dev/null
+++ b/src/assets/svg-icon/file-dir.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icon/file-excel.svg b/src/assets/svg-icon/file-excel.svg
new file mode 100644
index 00000000..cd43176f
--- /dev/null
+++ b/src/assets/svg-icon/file-excel.svg
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icon/file-html.svg b/src/assets/svg-icon/file-html.svg
new file mode 100644
index 00000000..7a87a8e9
--- /dev/null
+++ b/src/assets/svg-icon/file-html.svg
@@ -0,0 +1,14 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icon/file-html2.svg b/src/assets/svg-icon/file-html2.svg
new file mode 100644
index 00000000..b84da6c5
--- /dev/null
+++ b/src/assets/svg-icon/file-html2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icon/file-js.svg b/src/assets/svg-icon/file-js.svg
new file mode 100644
index 00000000..ef737aa4
--- /dev/null
+++ b/src/assets/svg-icon/file-js.svg
@@ -0,0 +1,14 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icon/file-js2.svg b/src/assets/svg-icon/file-js2.svg
new file mode 100644
index 00000000..fed9b0de
--- /dev/null
+++ b/src/assets/svg-icon/file-js2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icon/file-markdown.svg b/src/assets/svg-icon/file-markdown.svg
new file mode 100644
index 00000000..2ad93f6b
--- /dev/null
+++ b/src/assets/svg-icon/file-markdown.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icon/file-pdf.svg b/src/assets/svg-icon/file-pdf.svg
new file mode 100644
index 00000000..86e53b8f
--- /dev/null
+++ b/src/assets/svg-icon/file-pdf.svg
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icon/file-ppt.svg b/src/assets/svg-icon/file-ppt.svg
new file mode 100644
index 00000000..c11d4324
--- /dev/null
+++ b/src/assets/svg-icon/file-ppt.svg
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icon/file-rar.svg b/src/assets/svg-icon/file-rar.svg
new file mode 100644
index 00000000..fbed0967
--- /dev/null
+++ b/src/assets/svg-icon/file-rar.svg
@@ -0,0 +1,16 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icon/file-wps.svg b/src/assets/svg-icon/file-wps.svg
new file mode 100644
index 00000000..652b056b
--- /dev/null
+++ b/src/assets/svg-icon/file-wps.svg
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icon/file-zip.svg b/src/assets/svg-icon/file-zip.svg
new file mode 100644
index 00000000..51fde6fa
--- /dev/null
+++ b/src/assets/svg-icon/file-zip.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icon/upload-file.svg b/src/assets/svg-icon/upload-file.svg
new file mode 100644
index 00000000..60ca4bd2
--- /dev/null
+++ b/src/assets/svg-icon/upload-file.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icon/upload-folder.svg b/src/assets/svg-icon/upload-folder.svg
new file mode 100644
index 00000000..3c13f503
--- /dev/null
+++ b/src/assets/svg-icon/upload-folder.svg
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/src/service/api/pan.ts b/src/service/api/pan.ts
new file mode 100644
index 00000000..5f995783
--- /dev/null
+++ b/src/service/api/pan.ts
@@ -0,0 +1,18 @@
+import { request } from '../request';
+
+/** 网盘上传地址 */
+export const simpleUploadURL = `${import.meta.env.VITE_SERVICE_BASE_URL}/pan/upload`;
+/** 获取首页文件列表 */
+export const fetchGetFileList = () => {
+ return request({
+ url: '/pan/filelist'
+ });
+};
+
+/** 删除文件 */
+export const fetchDeleteFile = (id: string) => {
+ return request({
+ url: `/pan/file/${id}`,
+ method: 'delete'
+ });
+};
diff --git a/src/typings/app.d.ts b/src/typings/app.d.ts
index 076c0c98..c832f9c5 100644
--- a/src/typings/app.d.ts
+++ b/src/typings/app.d.ts
@@ -263,6 +263,32 @@ declare namespace App {
/** The global dropdown key */
type DropdownKey = 'closeCurrent' | 'closeOther' | 'closeLeft' | 'closeRight' | 'closeAll';
+
+ /** 文件类型 */
+ type FileItem = {
+ /** 文件唯一标识 */
+ id: string;
+ /** 文件类型 */
+ type?: string;
+ /** 文件名 */
+ name: string;
+ /** 拓展名 */
+ extendName: string;
+ /** 文件路径 */
+ src: string;
+ /** 文件修改时间 */
+ updateTime: string;
+ /** 是否是目录 */
+ isDir: boolean;
+ /** 是否是公共目录 */
+ isPublic?: boolean;
+ /** 文件路径 */
+ filePath: string;
+ /** 文件大小 */
+ size: number;
+ /** 任意属性只能有一个 */
+ [propName: string]: any;
+ };
}
/**
diff --git a/src/views/pan/components/file-grid.vue b/src/views/pan/components/file-grid.vue
new file mode 100644
index 00000000..ac8456f4
--- /dev/null
+++ b/src/views/pan/components/file-grid.vue
@@ -0,0 +1,182 @@
+
+
+
+
+ {{ getFileName(item) }}
+
+