CatPtain commited on
Commit
38717b4
·
verified ·
1 Parent(s): b7560a4

Upload 6 files

Browse files
frontend/env.d.ts ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ // eslint-disable-next-line spaced-comment
2
+ /// <reference types="vite/client" />
frontend/index.html ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <link rel="icon" href="/favicon.ico">
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
7
+ <meta name="renderer" content="webkit">
8
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
+ <meta name="description" content="PPTist - 在线演示文稿(幻灯片)应用,还原了大部分 Office PowerPoint 常用功能,实现在线PPT的编辑、演示,支持导出PPT文件,支持AI生成PPT。" />
10
+ <meta name="keywords" content="pptist,ppt,powerpoint,office powerpoint,在线ppt,幻灯片,演示文稿,ppt在线制作,aippt" />
11
+ <title>PPTist - 在线演示文稿</title>
12
+
13
+ <style>
14
+ .first-screen-loading {
15
+ width: 200px;
16
+ height: 200px;
17
+ position: fixed;
18
+ top: 50%;
19
+ left: 50%;
20
+ margin-top: -100px;
21
+ margin-left: -100px;
22
+ display: flex;
23
+ flex-direction: column;
24
+ justify-content: center;
25
+ align-items: center;
26
+ }
27
+ .first-screen-loading-spinner {
28
+ width: 36px;
29
+ height: 36px;
30
+ border: 3px solid #d14424;
31
+ border-top-color: transparent;
32
+ border-radius: 50%;
33
+ box-sizing: border-box;
34
+ animation: spinner .8s linear infinite;
35
+ }
36
+ .first-screen-loading-text {
37
+ margin-top: 20px;
38
+ color: #d14424;
39
+ }
40
+ @keyframes spinner {
41
+ 0% {
42
+ transform: rotate(0deg);
43
+ }
44
+ 100% {
45
+ transform: rotate(360deg);
46
+ }
47
+ }
48
+ </style>
49
+ </head>
50
+ <body>
51
+ <div id="app">
52
+ <div class="first-screen-loading">
53
+ <div class="first-screen-loading-spinner"></div>
54
+ <div class="first-screen-loading-text">正在加载中,请稍等 ...</div>
55
+ </div>
56
+ </div>
57
+ <script type="module" src="/src/main.ts"></script>
58
+ </body>
59
+
60
+ <script>
61
+ document.oncontextmenu = e => e.preventDefault()
62
+ </script>
63
+ </html>
frontend/package.json ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "pptist",
3
+ "version": "2.0.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "run-p type-check \"build-only {@}\" --",
9
+ "preview": "vite preview",
10
+ "build-only": "vite build",
11
+ "type-check": "vue-tsc --build --force",
12
+ "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
13
+ "prepare": "husky install"
14
+ },
15
+ "dependencies": {
16
+ "@icon-park/vue-next": "^1.4.2",
17
+ "animate.css": "^4.1.1",
18
+ "axios": "^1.7.9",
19
+ "clipboard": "^2.0.11",
20
+ "crypto-js": "^4.2.0",
21
+ "dexie": "^4.0.11",
22
+ "echarts": "^5.5.1",
23
+ "file-saver": "^2.0.5",
24
+ "hfmath": "^0.0.2",
25
+ "html-to-image": "^1.11.11",
26
+ "lodash": "^4.17.21",
27
+ "mitt": "^3.0.1",
28
+ "nanoid": "^5.0.7",
29
+ "number-precision": "^1.6.0",
30
+ "pinia": "^3.0.2",
31
+ "pptxgenjs": "^3.12.0",
32
+ "pptxtojson": "^1.3.2",
33
+ "prosemirror-commands": "^1.6.0",
34
+ "prosemirror-dropcursor": "^1.8.1",
35
+ "prosemirror-gapcursor": "^1.3.2",
36
+ "prosemirror-history": "^1.3.2",
37
+ "prosemirror-inputrules": "^1.4.0",
38
+ "prosemirror-keymap": "^1.2.2",
39
+ "prosemirror-model": "^1.22.2",
40
+ "prosemirror-schema-basic": "^1.2.3",
41
+ "prosemirror-schema-list": "^1.4.1",
42
+ "prosemirror-state": "^1.4.3",
43
+ "prosemirror-view": "^1.33.9",
44
+ "svg-arc-to-cubic-bezier": "^3.2.0",
45
+ "svg-pathdata": "^7.1.0",
46
+ "tinycolor2": "^1.6.0",
47
+ "tippy.js": "^6.3.7",
48
+ "vue": "^3.4.34",
49
+ "vue-router": "^4.5.1",
50
+ "vuedraggable": "^4.1.0"
51
+ },
52
+ "devDependencies": {
53
+ "@commitlint/cli": "^18.4.3",
54
+ "@commitlint/config-conventional": "^18.4.3",
55
+ "@rushstack/eslint-patch": "^1.3.3",
56
+ "@tsconfig/node18": "^18.2.2",
57
+ "@types/crypto-js": "^4.2.1",
58
+ "@types/file-saver": "^2.0.7",
59
+ "@types/lodash": "^4.14.202",
60
+ "@types/node": "^18.19.3",
61
+ "@types/svg-arc-to-cubic-bezier": "^3.2.2",
62
+ "@types/tinycolor2": "^1.4.6",
63
+ "@vitejs/plugin-vue": "^5.1.0",
64
+ "@vue/eslint-config-typescript": "^12.0.0",
65
+ "@vue/tsconfig": "^0.5.0",
66
+ "eslint": "^8.49.0",
67
+ "eslint-plugin-vue": "^9.17.0",
68
+ "husky": "^8.0.3",
69
+ "npm-run-all2": "^6.1.1",
70
+ "sass": "^1.69.6",
71
+ "typescript": "~5.3.0",
72
+ "vite": "^5.3.5",
73
+ "vue-tsc": "^2.0.29"
74
+ }
75
+ }
frontend/tsconfig.app.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "extends": "@vue/tsconfig/tsconfig.dom.json",
3
+ "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
4
+ "exclude": ["src/**/__tests__/*"],
5
+ "compilerOptions": {
6
+ "composite": true,
7
+ "noEmit": true,
8
+ "baseUrl": ".",
9
+ "paths": {
10
+ "@/*": ["./src/*"]
11
+ }
12
+ }
13
+ }
frontend/tsconfig.json ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "files": [],
3
+ "references": [
4
+ {
5
+ "path": "./tsconfig.node.json"
6
+ },
7
+ {
8
+ "path": "./tsconfig.app.json"
9
+ }
10
+ ]
11
+ }
frontend/vite.config.ts ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { fileURLToPath, URL } from 'node:url'
2
+
3
+ import { defineConfig } from 'vite'
4
+ import vue from '@vitejs/plugin-vue'
5
+
6
+ // https://vitejs.dev/config/
7
+ export default defineConfig({
8
+ base: '',
9
+ plugins: [
10
+ vue(),
11
+ ],
12
+ server: {
13
+ host: '127.0.0.1',
14
+ port: 5173,
15
+ proxy: {
16
+ '/api': {
17
+ target: 'http://localhost:7860', // 修改为后端实际运行的端口
18
+ changeOrigin: true,
19
+ }
20
+ }
21
+ },
22
+ css: {
23
+ preprocessorOptions: {
24
+ scss: {
25
+ additionalData: `
26
+ @import '@/assets/styles/variable.scss';
27
+ @import '@/assets/styles/mixin.scss';
28
+ `
29
+ },
30
+ },
31
+ },
32
+ resolve: {
33
+ alias: {
34
+ '@': fileURLToPath(new URL('./src', import.meta.url))
35
+ }
36
+ }
37
+ })