LiRen-qiu 4 months ago
parent 6c3bfe54f5
commit 4fbeffb3d2

@ -0,0 +1,52 @@
# Details
Date : 2025-04-23 21:25:37
Directory e:\\desktop\\模训\\moxun\\src\\vue2
Total : 37 files, 17785 codes, 52 comments, 635 blanks, all 18472 lines
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [src/vue2/.eslintrc.js](/src/vue2/.eslintrc.js) | JavaScript | 18 | 0 | 0 | 18 |
| [src/vue2/README.md](/src/vue2/README.md) | Markdown | 19 | 0 | 6 | 25 |
| [src/vue2/babel.config.js](/src/vue2/babel.config.js) | JavaScript | 5 | 0 | 1 | 6 |
| [src/vue2/jsconfig.json](/src/vue2/jsconfig.json) | JSON with Comments | 19 | 0 | 1 | 20 |
| [src/vue2/package-lock.json](/src/vue2/package-lock.json) | JSON | 12,372 | 0 | 1 | 12,373 |
| [src/vue2/package.json](/src/vue2/package.json) | JSON | 48 | 0 | 1 | 49 |
| [src/vue2/public/index.html](/src/vue2/public/index.html) | HTML | 16 | 1 | 1 | 18 |
| [src/vue2/src/App.vue](/src/vue2/src/App.vue) | vue | 19 | 0 | 4 | 23 |
| [src/vue2/src/api/analysis.js](/src/vue2/src/api/analysis.js) | JavaScript | 57 | 5 | 9 | 71 |
| [src/vue2/src/api/index.js](/src/vue2/src/api/index.js) | JavaScript | 29 | 4 | 4 | 37 |
| [src/vue2/src/api/process.js](/src/vue2/src/api/process.js) | JavaScript | 78 | 6 | 12 | 96 |
| [src/vue2/src/assets/css/global.css](/src/vue2/src/assets/css/global.css) | CSS | 28 | 2 | 4 | 34 |
| [src/vue2/src/components/HelloWorld.vue](/src/vue2/src/components/HelloWorld.vue) | vue | 55 | 1 | 3 | 59 |
| [src/vue2/src/components/base/ErrorMessage.vue](/src/vue2/src/components/base/ErrorMessage.vue) | vue | 53 | 0 | 8 | 61 |
| [src/vue2/src/components/base/GlobalLoading.vue](/src/vue2/src/components/base/GlobalLoading.vue) | vue | 52 | 0 | 6 | 58 |
| [src/vue2/src/components/layout/Header.vue](/src/vue2/src/components/layout/Header.vue) | vue | 57 | 0 | 6 | 63 |
| [src/vue2/src/components/layout/MainLayout.vue](/src/vue2/src/components/layout/MainLayout.vue) | vue | 38 | 0 | 4 | 42 |
| [src/vue2/src/components/process/DataPreprocess.vue](/src/vue2/src/components/process/DataPreprocess.vue) | vue | 556 | 0 | 71 | 627 |
| [src/vue2/src/components/process/DataPreprocessing.vue](/src/vue2/src/components/process/DataPreprocessing.vue) | vue | 262 | 0 | 21 | 283 |
| [src/vue2/src/components/process/FileUpload.vue](/src/vue2/src/components/process/FileUpload.vue) | vue | 294 | 0 | 46 | 340 |
| [src/vue2/src/components/process/FormatMerge.vue](/src/vue2/src/components/process/FormatMerge.vue) | vue | 552 | 0 | 66 | 618 |
| [src/vue2/src/components/process/MergeFormat.vue](/src/vue2/src/components/process/MergeFormat.vue) | vue | 252 | 0 | 37 | 289 |
| [src/vue2/src/components/process/ModelAnalysis.vue](/src/vue2/src/components/process/ModelAnalysis.vue) | vue | 727 | 1 | 85 | 813 |
| [src/vue2/src/components/process/PreProcess.vue](/src/vue2/src/components/process/PreProcess.vue) | vue | 213 | 0 | 31 | 244 |
| [src/vue2/src/components/process/ProcessPage.vue](/src/vue2/src/components/process/ProcessPage.vue) | vue | 253 | 5 | 29 | 287 |
| [src/vue2/src/components/process/ProcessStep.vue](/src/vue2/src/components/process/ProcessStep.vue) | vue | 218 | 5 | 16 | 239 |
| [src/vue2/src/components/process/WordCorrection.vue](/src/vue2/src/components/process/WordCorrection.vue) | vue | 749 | 0 | 82 | 831 |
| [src/vue2/src/main.js](/src/vue2/src/main.js) | JavaScript | 14 | 0 | 3 | 17 |
| [src/vue2/src/router/index.js](/src/vue2/src/router/index.js) | JavaScript | 29 | 0 | 4 | 33 |
| [src/vue2/src/store/index.js](/src/vue2/src/store/index.js) | JavaScript | 13 | 0 | 2 | 15 |
| [src/vue2/src/store/modules/analysis.js](/src/vue2/src/store/modules/analysis.js) | JavaScript | 77 | 3 | 4 | 84 |
| [src/vue2/src/store/modules/app.js](/src/vue2/src/store/modules/app.js) | JavaScript | 34 | 1 | 4 | 39 |
| [src/vue2/src/store/modules/process.js](/src/vue2/src/store/modules/process.js) | JavaScript | 101 | 1 | 5 | 107 |
| [src/vue2/src/utils/mock.js](/src/vue2/src/utils/mock.js) | JavaScript | 152 | 12 | 12 | 176 |
| [src/vue2/src/views/Analysis.vue](/src/vue2/src/views/Analysis.vue) | vue | 168 | 4 | 25 | 197 |
| [src/vue2/src/views/Process.vue](/src/vue2/src/views/Process.vue) | vue | 139 | 1 | 20 | 160 |
| [src/vue2/vue.config.js](/src/vue2/vue.config.js) | JavaScript | 19 | 0 | 1 | 20 |
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

@ -0,0 +1,15 @@
# Diff Details
Date : 2025-04-23 21:25:37
Directory e:\\desktop\\模训\\moxun\\src\\vue2
Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details

@ -0,0 +1,2 @@
"filename", "language", "", "comment", "blank", "total"
"Total", "-", , 0, 0, 0
1 filename language comment blank total
2 Total - 0 0 0

@ -0,0 +1,19 @@
# Diff Summary
Date : 2025-04-23 21:25:37
Directory e:\\desktop\\模训\\moxun\\src\\vue2
Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)

@ -0,0 +1,22 @@
Date : 2025-04-23 21:25:37
Directory : e:\desktop\模训\moxun\src\vue2
Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
Languages
+----------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+----------+------------+------------+------------+------------+------------+
+----------+------------+------------+------------+------------+------------+
Directories
+------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+------+------------+------------+------------+------------+------------+
+------+------------+------------+------------+------------+------------+
Files
+----------+----------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+----------+----------+------------+------------+------------+------------+
| Total | | 0 | 0 | 0 | 0 |
+----------+----------+------------+------------+------------+------------+

@ -0,0 +1,39 @@
"filename", "language", "JSON with Comments", "JavaScript", "vue", "Markdown", "JSON", "CSS", "HTML", "comment", "blank", "total"
"e:\desktop\模训\moxun\src\vue2\.eslintrc.js", "JavaScript", 0, 18, 0, 0, 0, 0, 0, 0, 0, 18
"e:\desktop\模训\moxun\src\vue2\README.md", "Markdown", 0, 0, 0, 19, 0, 0, 0, 0, 6, 25
"e:\desktop\模训\moxun\src\vue2\babel.config.js", "JavaScript", 0, 5, 0, 0, 0, 0, 0, 0, 1, 6
"e:\desktop\模训\moxun\src\vue2\jsconfig.json", "JSON with Comments", 19, 0, 0, 0, 0, 0, 0, 0, 1, 20
"e:\desktop\模训\moxun\src\vue2\package-lock.json", "JSON", 0, 0, 0, 0, 12372, 0, 0, 0, 1, 12373
"e:\desktop\模训\moxun\src\vue2\package.json", "JSON", 0, 0, 0, 0, 48, 0, 0, 0, 1, 49
"e:\desktop\模训\moxun\src\vue2\public\index.html", "HTML", 0, 0, 0, 0, 0, 0, 16, 1, 1, 18
"e:\desktop\模训\moxun\src\vue2\src\App.vue", "vue", 0, 0, 19, 0, 0, 0, 0, 0, 4, 23
"e:\desktop\模训\moxun\src\vue2\src\api\analysis.js", "JavaScript", 0, 57, 0, 0, 0, 0, 0, 5, 9, 71
"e:\desktop\模训\moxun\src\vue2\src\api\index.js", "JavaScript", 0, 29, 0, 0, 0, 0, 0, 4, 4, 37
"e:\desktop\模训\moxun\src\vue2\src\api\process.js", "JavaScript", 0, 78, 0, 0, 0, 0, 0, 6, 12, 96
"e:\desktop\模训\moxun\src\vue2\src\assets\css\global.css", "CSS", 0, 0, 0, 0, 0, 28, 0, 2, 4, 34
"e:\desktop\模训\moxun\src\vue2\src\components\HelloWorld.vue", "vue", 0, 0, 55, 0, 0, 0, 0, 1, 3, 59
"e:\desktop\模训\moxun\src\vue2\src\components\base\ErrorMessage.vue", "vue", 0, 0, 53, 0, 0, 0, 0, 0, 8, 61
"e:\desktop\模训\moxun\src\vue2\src\components\base\GlobalLoading.vue", "vue", 0, 0, 52, 0, 0, 0, 0, 0, 6, 58
"e:\desktop\模训\moxun\src\vue2\src\components\layout\Header.vue", "vue", 0, 0, 57, 0, 0, 0, 0, 0, 6, 63
"e:\desktop\模训\moxun\src\vue2\src\components\layout\MainLayout.vue", "vue", 0, 0, 38, 0, 0, 0, 0, 0, 4, 42
"e:\desktop\模训\moxun\src\vue2\src\components\process\DataPreprocess.vue", "vue", 0, 0, 556, 0, 0, 0, 0, 0, 71, 627
"e:\desktop\模训\moxun\src\vue2\src\components\process\DataPreprocessing.vue", "vue", 0, 0, 262, 0, 0, 0, 0, 0, 21, 283
"e:\desktop\模训\moxun\src\vue2\src\components\process\FileUpload.vue", "vue", 0, 0, 294, 0, 0, 0, 0, 0, 46, 340
"e:\desktop\模训\moxun\src\vue2\src\components\process\FormatMerge.vue", "vue", 0, 0, 552, 0, 0, 0, 0, 0, 66, 618
"e:\desktop\模训\moxun\src\vue2\src\components\process\MergeFormat.vue", "vue", 0, 0, 252, 0, 0, 0, 0, 0, 37, 289
"e:\desktop\模训\moxun\src\vue2\src\components\process\ModelAnalysis.vue", "vue", 0, 0, 727, 0, 0, 0, 0, 1, 85, 813
"e:\desktop\模训\moxun\src\vue2\src\components\process\PreProcess.vue", "vue", 0, 0, 213, 0, 0, 0, 0, 0, 31, 244
"e:\desktop\模训\moxun\src\vue2\src\components\process\ProcessPage.vue", "vue", 0, 0, 253, 0, 0, 0, 0, 5, 29, 287
"e:\desktop\模训\moxun\src\vue2\src\components\process\ProcessStep.vue", "vue", 0, 0, 218, 0, 0, 0, 0, 5, 16, 239
"e:\desktop\模训\moxun\src\vue2\src\components\process\WordCorrection.vue", "vue", 0, 0, 749, 0, 0, 0, 0, 0, 82, 831
"e:\desktop\模训\moxun\src\vue2\src\main.js", "JavaScript", 0, 14, 0, 0, 0, 0, 0, 0, 3, 17
"e:\desktop\模训\moxun\src\vue2\src\router\index.js", "JavaScript", 0, 29, 0, 0, 0, 0, 0, 0, 4, 33
"e:\desktop\模训\moxun\src\vue2\src\store\index.js", "JavaScript", 0, 13, 0, 0, 0, 0, 0, 0, 2, 15
"e:\desktop\模训\moxun\src\vue2\src\store\modules\analysis.js", "JavaScript", 0, 77, 0, 0, 0, 0, 0, 3, 4, 84
"e:\desktop\模训\moxun\src\vue2\src\store\modules\app.js", "JavaScript", 0, 34, 0, 0, 0, 0, 0, 1, 4, 39
"e:\desktop\模训\moxun\src\vue2\src\store\modules\process.js", "JavaScript", 0, 101, 0, 0, 0, 0, 0, 1, 5, 107
"e:\desktop\模训\moxun\src\vue2\src\utils\mock.js", "JavaScript", 0, 152, 0, 0, 0, 0, 0, 12, 12, 176
"e:\desktop\模训\moxun\src\vue2\src\views\Analysis.vue", "vue", 0, 0, 168, 0, 0, 0, 0, 4, 25, 197
"e:\desktop\模训\moxun\src\vue2\src\views\Process.vue", "vue", 0, 0, 139, 0, 0, 0, 0, 1, 20, 160
"e:\desktop\模训\moxun\src\vue2\vue.config.js", "JavaScript", 0, 19, 0, 0, 0, 0, 0, 0, 1, 20
"Total", "-", 19, 626, 4657, 19, 12420, 28, 16, 52, 635, 18472
1 filename language JSON with Comments JavaScript vue Markdown JSON CSS HTML comment blank total
2 e:\desktop\模训\moxun\src\vue2\.eslintrc.js JavaScript 0 18 0 0 0 0 0 0 0 18
3 e:\desktop\模训\moxun\src\vue2\README.md Markdown 0 0 0 19 0 0 0 0 6 25
4 e:\desktop\模训\moxun\src\vue2\babel.config.js JavaScript 0 5 0 0 0 0 0 0 1 6
5 e:\desktop\模训\moxun\src\vue2\jsconfig.json JSON with Comments 19 0 0 0 0 0 0 0 1 20
6 e:\desktop\模训\moxun\src\vue2\package-lock.json JSON 0 0 0 0 12372 0 0 0 1 12373
7 e:\desktop\模训\moxun\src\vue2\package.json JSON 0 0 0 0 48 0 0 0 1 49
8 e:\desktop\模训\moxun\src\vue2\public\index.html HTML 0 0 0 0 0 0 16 1 1 18
9 e:\desktop\模训\moxun\src\vue2\src\App.vue vue 0 0 19 0 0 0 0 0 4 23
10 e:\desktop\模训\moxun\src\vue2\src\api\analysis.js JavaScript 0 57 0 0 0 0 0 5 9 71
11 e:\desktop\模训\moxun\src\vue2\src\api\index.js JavaScript 0 29 0 0 0 0 0 4 4 37
12 e:\desktop\模训\moxun\src\vue2\src\api\process.js JavaScript 0 78 0 0 0 0 0 6 12 96
13 e:\desktop\模训\moxun\src\vue2\src\assets\css\global.css CSS 0 0 0 0 0 28 0 2 4 34
14 e:\desktop\模训\moxun\src\vue2\src\components\HelloWorld.vue vue 0 0 55 0 0 0 0 1 3 59
15 e:\desktop\模训\moxun\src\vue2\src\components\base\ErrorMessage.vue vue 0 0 53 0 0 0 0 0 8 61
16 e:\desktop\模训\moxun\src\vue2\src\components\base\GlobalLoading.vue vue 0 0 52 0 0 0 0 0 6 58
17 e:\desktop\模训\moxun\src\vue2\src\components\layout\Header.vue vue 0 0 57 0 0 0 0 0 6 63
18 e:\desktop\模训\moxun\src\vue2\src\components\layout\MainLayout.vue vue 0 0 38 0 0 0 0 0 4 42
19 e:\desktop\模训\moxun\src\vue2\src\components\process\DataPreprocess.vue vue 0 0 556 0 0 0 0 0 71 627
20 e:\desktop\模训\moxun\src\vue2\src\components\process\DataPreprocessing.vue vue 0 0 262 0 0 0 0 0 21 283
21 e:\desktop\模训\moxun\src\vue2\src\components\process\FileUpload.vue vue 0 0 294 0 0 0 0 0 46 340
22 e:\desktop\模训\moxun\src\vue2\src\components\process\FormatMerge.vue vue 0 0 552 0 0 0 0 0 66 618
23 e:\desktop\模训\moxun\src\vue2\src\components\process\MergeFormat.vue vue 0 0 252 0 0 0 0 0 37 289
24 e:\desktop\模训\moxun\src\vue2\src\components\process\ModelAnalysis.vue vue 0 0 727 0 0 0 0 1 85 813
25 e:\desktop\模训\moxun\src\vue2\src\components\process\PreProcess.vue vue 0 0 213 0 0 0 0 0 31 244
26 e:\desktop\模训\moxun\src\vue2\src\components\process\ProcessPage.vue vue 0 0 253 0 0 0 0 5 29 287
27 e:\desktop\模训\moxun\src\vue2\src\components\process\ProcessStep.vue vue 0 0 218 0 0 0 0 5 16 239
28 e:\desktop\模训\moxun\src\vue2\src\components\process\WordCorrection.vue vue 0 0 749 0 0 0 0 0 82 831
29 e:\desktop\模训\moxun\src\vue2\src\main.js JavaScript 0 14 0 0 0 0 0 0 3 17
30 e:\desktop\模训\moxun\src\vue2\src\router\index.js JavaScript 0 29 0 0 0 0 0 0 4 33
31 e:\desktop\模训\moxun\src\vue2\src\store\index.js JavaScript 0 13 0 0 0 0 0 0 2 15
32 e:\desktop\模训\moxun\src\vue2\src\store\modules\analysis.js JavaScript 0 77 0 0 0 0 0 3 4 84
33 e:\desktop\模训\moxun\src\vue2\src\store\modules\app.js JavaScript 0 34 0 0 0 0 0 1 4 39
34 e:\desktop\模训\moxun\src\vue2\src\store\modules\process.js JavaScript 0 101 0 0 0 0 0 1 5 107
35 e:\desktop\模训\moxun\src\vue2\src\utils\mock.js JavaScript 0 152 0 0 0 0 0 12 12 176
36 e:\desktop\模训\moxun\src\vue2\src\views\Analysis.vue vue 0 0 168 0 0 0 0 4 25 197
37 e:\desktop\模训\moxun\src\vue2\src\views\Process.vue vue 0 0 139 0 0 0 0 1 20 160
38 e:\desktop\模训\moxun\src\vue2\vue.config.js JavaScript 0 19 0 0 0 0 0 0 1 20
39 Total - 19 626 4657 19 12420 28 16 52 635 18472

File diff suppressed because one or more lines are too long

@ -0,0 +1,45 @@
# Summary
Date : 2025-04-23 21:25:37
Directory e:\\desktop\\模训\\moxun\\src\\vue2
Total : 37 files, 17785 codes, 52 comments, 635 blanks, all 18472 lines
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| JSON | 2 | 12,420 | 0 | 2 | 12,422 |
| vue | 18 | 4,657 | 17 | 560 | 5,234 |
| JavaScript | 13 | 626 | 32 | 61 | 719 |
| CSS | 1 | 28 | 2 | 4 | 34 |
| JSON with Comments | 1 | 19 | 0 | 1 | 20 |
| Markdown | 1 | 19 | 0 | 6 | 25 |
| HTML | 1 | 16 | 1 | 1 | 18 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 37 | 17,785 | 52 | 635 | 18,472 |
| . (Files) | 7 | 12,500 | 0 | 11 | 12,511 |
| public | 1 | 16 | 1 | 1 | 18 |
| src | 29 | 5,269 | 51 | 623 | 5,943 |
| src (Files) | 2 | 33 | 0 | 7 | 40 |
| src\\api | 3 | 164 | 15 | 25 | 204 |
| src\\assets | 1 | 28 | 2 | 4 | 34 |
| src\\assets\\css | 1 | 28 | 2 | 4 | 34 |
| src\\components | 15 | 4,331 | 12 | 511 | 4,854 |
| src\\components (Files) | 1 | 55 | 1 | 3 | 59 |
| src\\components\\base | 2 | 105 | 0 | 14 | 119 |
| src\\components\\layout | 2 | 95 | 0 | 10 | 105 |
| src\\components\\process | 10 | 4,076 | 11 | 484 | 4,571 |
| src\\router | 1 | 29 | 0 | 4 | 33 |
| src\\store | 4 | 225 | 5 | 15 | 245 |
| src\\store (Files) | 1 | 13 | 0 | 2 | 15 |
| src\\store\\modules | 3 | 212 | 5 | 13 | 230 |
| src\\utils | 1 | 152 | 12 | 12 | 176 |
| src\\views | 2 | 307 | 5 | 45 | 357 |
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

@ -0,0 +1,85 @@
Date : 2025-04-23 21:25:37
Directory : e:\desktop\模训\moxun\src\vue2
Total : 37 files, 17785 codes, 52 comments, 635 blanks, all 18472 lines
Languages
+--------------------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+--------------------+------------+------------+------------+------------+------------+
| JSON | 2 | 12,420 | 0 | 2 | 12,422 |
| vue | 18 | 4,657 | 17 | 560 | 5,234 |
| JavaScript | 13 | 626 | 32 | 61 | 719 |
| CSS | 1 | 28 | 2 | 4 | 34 |
| JSON with Comments | 1 | 19 | 0 | 1 | 20 |
| Markdown | 1 | 19 | 0 | 6 | 25 |
| HTML | 1 | 16 | 1 | 1 | 18 |
+--------------------+------------+------------+------------+------------+------------+
Directories
+---------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+---------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 37 | 17,785 | 52 | 635 | 18,472 |
| . (Files) | 7 | 12,500 | 0 | 11 | 12,511 |
| public | 1 | 16 | 1 | 1 | 18 |
| src | 29 | 5,269 | 51 | 623 | 5,943 |
| src (Files) | 2 | 33 | 0 | 7 | 40 |
| src\api | 3 | 164 | 15 | 25 | 204 |
| src\assets | 1 | 28 | 2 | 4 | 34 |
| src\assets\css | 1 | 28 | 2 | 4 | 34 |
| src\components | 15 | 4,331 | 12 | 511 | 4,854 |
| src\components (Files) | 1 | 55 | 1 | 3 | 59 |
| src\components\base | 2 | 105 | 0 | 14 | 119 |
| src\components\layout | 2 | 95 | 0 | 10 | 105 |
| src\components\process | 10 | 4,076 | 11 | 484 | 4,571 |
| src\router | 1 | 29 | 0 | 4 | 33 |
| src\store | 4 | 225 | 5 | 15 | 245 |
| src\store (Files) | 1 | 13 | 0 | 2 | 15 |
| src\store\modules | 3 | 212 | 5 | 13 | 230 |
| src\utils | 1 | 152 | 12 | 12 | 176 |
| src\views | 2 | 307 | 5 | 45 | 357 |
+---------------------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+---------------------------------------------------------------------------+--------------------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+---------------------------------------------------------------------------+--------------------+------------+------------+------------+------------+
| e:\desktop\模训\moxun\src\vue2\.eslintrc.js | JavaScript | 18 | 0 | 0 | 18 |
| e:\desktop\模训\moxun\src\vue2\README.md | Markdown | 19 | 0 | 6 | 25 |
| e:\desktop\模训\moxun\src\vue2\babel.config.js | JavaScript | 5 | 0 | 1 | 6 |
| e:\desktop\模训\moxun\src\vue2\jsconfig.json | JSON with Comments | 19 | 0 | 1 | 20 |
| e:\desktop\模训\moxun\src\vue2\package-lock.json | JSON | 12,372 | 0 | 1 | 12,373 |
| e:\desktop\模训\moxun\src\vue2\package.json | JSON | 48 | 0 | 1 | 49 |
| e:\desktop\模训\moxun\src\vue2\public\index.html | HTML | 16 | 1 | 1 | 18 |
| e:\desktop\模训\moxun\src\vue2\src\App.vue | vue | 19 | 0 | 4 | 23 |
| e:\desktop\模训\moxun\src\vue2\src\api\analysis.js | JavaScript | 57 | 5 | 9 | 71 |
| e:\desktop\模训\moxun\src\vue2\src\api\index.js | JavaScript | 29 | 4 | 4 | 37 |
| e:\desktop\模训\moxun\src\vue2\src\api\process.js | JavaScript | 78 | 6 | 12 | 96 |
| e:\desktop\模训\moxun\src\vue2\src\assets\css\global.css | CSS | 28 | 2 | 4 | 34 |
| e:\desktop\模训\moxun\src\vue2\src\components\HelloWorld.vue | vue | 55 | 1 | 3 | 59 |
| e:\desktop\模训\moxun\src\vue2\src\components\base\ErrorMessage.vue | vue | 53 | 0 | 8 | 61 |
| e:\desktop\模训\moxun\src\vue2\src\components\base\GlobalLoading.vue | vue | 52 | 0 | 6 | 58 |
| e:\desktop\模训\moxun\src\vue2\src\components\layout\Header.vue | vue | 57 | 0 | 6 | 63 |
| e:\desktop\模训\moxun\src\vue2\src\components\layout\MainLayout.vue | vue | 38 | 0 | 4 | 42 |
| e:\desktop\模训\moxun\src\vue2\src\components\process\DataPreprocess.vue | vue | 556 | 0 | 71 | 627 |
| e:\desktop\模训\moxun\src\vue2\src\components\process\DataPreprocessing.vue | vue | 262 | 0 | 21 | 283 |
| e:\desktop\模训\moxun\src\vue2\src\components\process\FileUpload.vue | vue | 294 | 0 | 46 | 340 |
| e:\desktop\模训\moxun\src\vue2\src\components\process\FormatMerge.vue | vue | 552 | 0 | 66 | 618 |
| e:\desktop\模训\moxun\src\vue2\src\components\process\MergeFormat.vue | vue | 252 | 0 | 37 | 289 |
| e:\desktop\模训\moxun\src\vue2\src\components\process\ModelAnalysis.vue | vue | 727 | 1 | 85 | 813 |
| e:\desktop\模训\moxun\src\vue2\src\components\process\PreProcess.vue | vue | 213 | 0 | 31 | 244 |
| e:\desktop\模训\moxun\src\vue2\src\components\process\ProcessPage.vue | vue | 253 | 5 | 29 | 287 |
| e:\desktop\模训\moxun\src\vue2\src\components\process\ProcessStep.vue | vue | 218 | 5 | 16 | 239 |
| e:\desktop\模训\moxun\src\vue2\src\components\process\WordCorrection.vue | vue | 749 | 0 | 82 | 831 |
| e:\desktop\模训\moxun\src\vue2\src\main.js | JavaScript | 14 | 0 | 3 | 17 |
| e:\desktop\模训\moxun\src\vue2\src\router\index.js | JavaScript | 29 | 0 | 4 | 33 |
| e:\desktop\模训\moxun\src\vue2\src\store\index.js | JavaScript | 13 | 0 | 2 | 15 |
| e:\desktop\模训\moxun\src\vue2\src\store\modules\analysis.js | JavaScript | 77 | 3 | 4 | 84 |
| e:\desktop\模训\moxun\src\vue2\src\store\modules\app.js | JavaScript | 34 | 1 | 4 | 39 |
| e:\desktop\模训\moxun\src\vue2\src\store\modules\process.js | JavaScript | 101 | 1 | 5 | 107 |
| e:\desktop\模训\moxun\src\vue2\src\utils\mock.js | JavaScript | 152 | 12 | 12 | 176 |
| e:\desktop\模训\moxun\src\vue2\src\views\Analysis.vue | vue | 168 | 4 | 25 | 197 |
| e:\desktop\模训\moxun\src\vue2\src\views\Process.vue | vue | 139 | 1 | 20 | 160 |
| e:\desktop\模训\moxun\src\vue2\vue.config.js | JavaScript | 19 | 0 | 1 | 20 |
| Total | | 17,785 | 52 | 635 | 18,472 |
+---------------------------------------------------------------------------+--------------------+------------+------------+------------+------------+

@ -1,159 +0,0 @@
Vue 2 前端界面设计构想 (SVG/Excel 数据处理)
一、 核心设计理念
清晰分步: 将复杂的 SVG/Excel 数据处理流程分解为四个明确、独立的步骤(格式合并、单词纠错、大模型分析、统计结果),降低用户的认知负荷。
用户引导: 通过可视化的步骤指示器 (Stepper) 和明确的导航按钮,引导用户按顺序完成任务。
关注点分离: 将文件上传、数据查看/编辑、逐步处理这几个核心功能在界面布局上进行区分。
大数据友好: 考虑到可能处理大数据量,将数据查看和编辑功能与主处理流程适当分离(强烈推荐使用模态框),避免主界面卡顿。
简洁直观: 界面元素和交互设计力求简洁明了,符合初学者的使用习惯。
二、 界面整体布局与结构
采用上下两层的主体布局:
1. 上层区域:文件上传与准备
目的: 负责接收用户输入的文件。
内容:
一个醒目的文件上传控件:
支持拖拽和点击选择文件。
明确标示支持的文件类型 (SVG, Excel)。
上传过程中的视觉反馈:
进度条。
成功/失败提示。
上传成功后显示文件基本信息:
文件名、大小、类型等。
一个关键的 “查看/编辑文件内容” 按钮 (文件上传成功后激活)。
2. 下层区域:多步骤处理流程
目的: 引导用户完成四个核心处理步骤,并展示每步结果。
内容:
步骤指示器 (Stepper):
位于该区域的最上方。
可视化展示四个步骤(例如:① 格式合并 → ② 单词纠错 → ③ 大模型分析 → ④ 统计结果)。
高亮显示当前活动步骤和已完成步骤。
当前步骤内容区:
下层区域的主体。
每次只显示一个步骤的相关内容。
根据 Stepper 的状态动态切换。
导航按钮:
通常在当前步骤内容区的底部。
包含“下一步”按钮。
最后一步为“完成”或“导出结果”按钮。
三、 关键组件与交互细节
1. 文件上传组件
提供清晰的拖拽区域和“选择文件”按钮。
上传中、上传成功、上传失败都要有明确的视觉提示。
2. 数据查看/编辑组件 (核心交互点)
触发方式: 点击上层区域文件上传成功后的 “查看/编辑文件内容” 按钮。
实现方式: 强烈推荐使用“模态框 (Modal Dialog)”。
优点: 保持用户在主流程页面内,提供连贯体验,技术上状态管理相对简单。
备选方案: 在当前页面内展开一个区域。
不推荐方案: 跳转到全新的页面(打断流程,增加状态管理复杂度)。
模态框内容:
Excel 数据: 使用交互式表格组件(如 Element UI 的 Table 配合输入框),允许基本的单元格查看/编辑。
SVG 数据: 渲染 SVG 图像供查看。(编辑功能按需添加)。
操作: 模态框内需要有 “保存修改并关闭” 或 “关闭” 按钮。“保存修改”操作会将处理后的数据准备好,作为处理流程第一步的输入。
3. 步骤指示器 (Stepper)
使用 UI 库(如 Element UI 的 Steps 组件)实现。
清晰标示步骤编号和名称。
视觉上区分已完成、当前、未开始状态。
(可选) 允许点击已完成步骤返回查看。
4. 单个处理步骤内容区 (动态切换)
结构: 每个步骤都应包含:
明确的标题: 如 “步骤 1格式合并”。
简要说明 (可选): 解释该步骤的作用。
(可选) 配置项: 若步骤需要用户输入参数,提供表单控件。
处理结果展示区: 显示该步骤的处理结果。
格式合并: 合并后的数据预览或摘要。
单词纠错: 修改的单词列表/数量,或高亮修改处。
大模型分析: 分析摘要、关键标签或评分。(此步骤预计耗时长,必须显示加载/处理中状态)
统计结果: 图表或关键统计数据。
导航按钮: “下一步”按钮(触发进入下一处理步骤并更新 Stepper最后一个步骤显示“完成”或“导出结果”。
四、 整体工作流程 (User Journey)
用户进入界面,看到上层文件上传区和下层待激活的步骤区。
用户上传 SVG 或 Excel 文件,界面反馈上传状态。
上传成功,显示文件信息,“查看/编辑文件内容” 按钮可用。
用户点击 “查看/编辑文件内容”,弹出模态框。
用户在模态框中查看/编辑数据,点击 “保存修改并关闭”。
模态框关闭下层步骤区自动激活并显示第一步格式合并内容Stepper 指向第一步。
用户查看结果,点击 “下一步:单词纠错”。
界面更新为第二步单词纠错内容Stepper 指向第二步。
用户查看结果,点击 “下一步:大模型分析”。
界面显示明确的加载/处理中提示。完成后更新为第三步内容Stepper 指向第三步。
用户查看结果,点击 “下一步:查看统计结果”。
界面更新为第四步内容Stepper 指向第四步。
用户查看最终结果,点击 “完成” 或 “导出结果”。
五、 技术栈提示 (Vue 2)
初始化: 使用 vue create 并手动选择 Vue 2 版本。
核心 API: 使用 Options API (data, methods, computed, watch, 生命周期钩子)。
UI 库: 推荐使用成熟的 Vue 2 UI 库 (如 Element UI, Vuetify, iView) 获取开箱即用的组件(上传、模态框、步骤条、表格等)。
状态管理: 可能需要 Vuex (v3) 来管理跨组件/步骤的状态(尤其数据从编辑模态框传递到处理流程)。
路由: 若选择页面跳转方式实现查看/编辑,则需要 Vue Router (v3)。

@ -0,0 +1,122 @@
// @ts-nocheck
export {};
; declare module 'vue' {
export interface GlobalComponents { }
export interface GlobalDirectives { }
}
; declare global {
const __VLS_intrinsicElements: __VLS_IntrinsicElements;
const __VLS_directiveBindingRestFields: { instance: null, oldValue: null, modifiers: any, dir: any };
const __VLS_unref: typeof import('vue').unref;
const __VLS_placeholder: any;
type __VLS_NativeElements = __VLS_SpreadMerge<SVGElementTagNameMap, HTMLElementTagNameMap>;
type __VLS_IntrinsicElements = globalThis.JSX.IntrinsicElements;
type __VLS_Element = globalThis.JSX.Element;
type __VLS_GlobalComponents = import('vue').GlobalComponents & Pick<typeof import('vue'), 'Transition' | 'TransitionGroup' | 'KeepAlive' | 'Suspense' | 'Teleport'>;
type __VLS_GlobalDirectives = import('vue').GlobalDirectives;
type __VLS_IsAny<T> = 0 extends 1 & T ? true : false;
type __VLS_PickNotAny<A, B> = __VLS_IsAny<A> extends true ? B : A;
type __VLS_SpreadMerge<A, B> = Omit<A, keyof B> & B;
type __VLS_WithComponent<N0 extends string, LocalComponents, Self, N1 extends string, N2 extends string, N3 extends string> =
N1 extends keyof LocalComponents ? N1 extends N0 ? Pick<LocalComponents, N0 extends keyof LocalComponents ? N0 : never> : { [K in N0]: LocalComponents[N1] } :
N2 extends keyof LocalComponents ? N2 extends N0 ? Pick<LocalComponents, N0 extends keyof LocalComponents ? N0 : never> : { [K in N0]: LocalComponents[N2] } :
N3 extends keyof LocalComponents ? N3 extends N0 ? Pick<LocalComponents, N0 extends keyof LocalComponents ? N0 : never> : { [K in N0]: LocalComponents[N3] } :
Self extends object ? { [K in N0]: Self } :
N1 extends keyof __VLS_GlobalComponents ? N1 extends N0 ? Pick<__VLS_GlobalComponents, N0 extends keyof __VLS_GlobalComponents ? N0 : never> : { [K in N0]: __VLS_GlobalComponents[N1] } :
N2 extends keyof __VLS_GlobalComponents ? N2 extends N0 ? Pick<__VLS_GlobalComponents, N0 extends keyof __VLS_GlobalComponents ? N0 : never> : { [K in N0]: __VLS_GlobalComponents[N2] } :
N3 extends keyof __VLS_GlobalComponents ? N3 extends N0 ? Pick<__VLS_GlobalComponents, N0 extends keyof __VLS_GlobalComponents ? N0 : never> : { [K in N0]: __VLS_GlobalComponents[N3] } :
{ [K in N0]: unknown };
type __VLS_FunctionalComponentProps<T, K> =
'__ctx' extends keyof __VLS_PickNotAny<K, {}> ? K extends { __ctx?: { props?: infer P } } ? NonNullable<P> : never
: T extends (props: infer P, ...args: any) => any ? P :
{};
type __VLS_IsFunction<T, K> = K extends keyof T
? __VLS_IsAny<T[K]> extends false
? unknown extends T[K]
? false
: true
: false
: false;
type __VLS_NormalizeComponentEvent<Props, Events, onEvent extends keyof Props, Event extends keyof Events, CamelizedEvent extends keyof Events> = (
__VLS_IsFunction<Props, onEvent> extends true
? Props
: __VLS_IsFunction<Events, Event> extends true
? { [K in onEvent]?: Events[Event] }
: __VLS_IsFunction<Events, CamelizedEvent> extends true
? { [K in onEvent]?: Events[CamelizedEvent] }
: Props
) & Record<string, unknown>;
// fix https://github.com/vuejs/language-tools/issues/926
type __VLS_UnionToIntersection<U> = (U extends unknown ? (arg: U) => unknown : never) extends ((arg: infer P) => unknown) ? P : never;
type __VLS_OverloadUnionInner<T, U = unknown> = U & T extends (...args: infer A) => infer R
? U extends T
? never
: __VLS_OverloadUnionInner<T, Pick<T, keyof T> & U & ((...args: A) => R)> | ((...args: A) => R)
: never;
type __VLS_OverloadUnion<T> = Exclude<
__VLS_OverloadUnionInner<(() => never) & T>,
T extends () => never ? never : () => never
>;
type __VLS_ConstructorOverloads<T> = __VLS_OverloadUnion<T> extends infer F
? F extends (event: infer E, ...args: infer A) => any
? { [K in E & string]: (...args: A) => void; }
: never
: never;
type __VLS_NormalizeEmits<T> = __VLS_PrettifyGlobal<
__VLS_UnionToIntersection<
__VLS_ConstructorOverloads<T> & {
[K in keyof T]: T[K] extends any[] ? { (...args: T[K]): void } : never
}
>
>;
type __VLS_PrettifyGlobal<T> = { [K in keyof T]: T[K]; } & {};
type __VLS_PickFunctionalComponentCtx<T, K> = NonNullable<__VLS_PickNotAny<
'__ctx' extends keyof __VLS_PickNotAny<K, {}> ? K extends { __ctx?: infer Ctx } ? Ctx : never : any
, T extends (props: any, ctx: infer Ctx) => any ? Ctx : any
>>;
type __VLS_UseTemplateRef<T> = Readonly<import('vue').ShallowRef<T | null>>;
function __VLS_getVForSourceType<T extends number | string | any[] | Iterable<any>>(source: T): [
item: T extends number ? number
: T extends string ? string
: T extends any[] ? T[number]
: T extends Iterable<infer T1> ? T1
: any,
index: number,
][];
function __VLS_getVForSourceType<T>(source: T): [
item: T[keyof T],
key: keyof T,
index: number,
][];
// @ts-ignore
function __VLS_getSlotParams<T>(slot: T): Parameters<__VLS_PickNotAny<NonNullable<T>, (...args: any[]) => any>>;
// @ts-ignore
function __VLS_getSlotParam<T>(slot: T): Parameters<__VLS_PickNotAny<NonNullable<T>, (...args: any[]) => any>>[0];
function __VLS_asFunctionalDirective<T>(dir: T): T extends import('vue').ObjectDirective
? NonNullable<T['created' | 'beforeMount' | 'mounted' | 'beforeUpdate' | 'updated' | 'beforeUnmount' | 'unmounted']>
: T extends (...args: any) => any
? T
: (arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown) => void;
function __VLS_makeOptional<T>(t: T): { [K in keyof T]?: T[K] };
function __VLS_asFunctionalComponent<T, K = T extends new (...args: any) => any ? InstanceType<T> : unknown>(t: T, instance?: K):
T extends new (...args: any) => any
? (props: (K extends { $props: infer Props } ? Props : any) & Record<string, unknown>, ctx?: any) => __VLS_Element & {
__ctx?: {
attrs?: any;
slots?: K extends { $scopedSlots: infer Slots } ? Slots : any;
emit?: K extends { $emit: infer Emit } ? Emit : any;
expose?(exposed: K): void;
props?: (K extends { $props: infer Props } ? Props : any) & Record<string, unknown>;
}
}
: T extends () => any ? (props: {}, ctx?: any) => ReturnType<T>
: T extends (...args: any) => any ? T
: (_: {} & Record<string, unknown>, ctx?: any) => { __ctx?: { attrs?: any, expose?: any, slots?: any, emit?: any, props?: {} & Record<string, unknown> } };
function __VLS_functionalComponentArgsRest<T extends (...args: any) => any>(t: T): 2 extends Parameters<T>['length'] ? [any] : [];
function __VLS_asFunctionalElement<T>(tag: T, endTag?: T): (attrs: T & Record<string, unknown>) => void;
function __VLS_asFunctionalSlot<S>(slot: S): S extends () => infer R ? (props: {}) => R : NonNullable<S>;
function __VLS_tryAsConstant<const T>(t: T): T;
}

@ -72,9 +72,6 @@ export {};
'__ctx' extends keyof __VLS_PickNotAny<K, {}> ? K extends { __ctx?: infer Ctx } ? Ctx : never : any
, T extends (props: any, ctx: infer Ctx) => any ? Ctx : any
>>;
type __VLS_OmitStringIndex<T> = {
[K in keyof T as string extends K ? never : K]: T[K];
};
type __VLS_UseTemplateRef<T> = Readonly<import('vue').ShallowRef<T | null>>;
function __VLS_getVForSourceType<T extends number | string | any[] | Iterable<any>>(source: T): [
@ -116,6 +113,6 @@ export {};
: (_: {} & Record<string, unknown>, ctx?: any) => { __ctx?: { attrs?: any, expose?: any, slots?: any, emit?: any, props?: {} & Record<string, unknown> } };
function __VLS_functionalComponentArgsRest<T extends (...args: any) => any>(t: T): 2 extends Parameters<T>['length'] ? [any] : [];
function __VLS_asFunctionalElement<T>(tag: T, endTag?: T): (attrs: T & Record<string, unknown>) => void;
function __VLS_asFunctionalSlot<S>(slot: S): (props: NonNullable<S> extends (props: infer P) => any ? P : {}) => void;
function __VLS_asFunctionalSlot<S>(slot: S): S extends () => infer R ? (props: {}) => R : NonNullable<S>;
function __VLS_tryAsConstant<const T>(t: T): T;
}

@ -8,6 +8,7 @@
:operationButtonText="'上传文件'"
:processingText="'正在上传文件...'"
:errorText="'文件上传失败,请重试'"
:showPrevButton="false"
@start="handleUpload"
@retry="handleRetry"
@prev="$emit('prev')"
@ -47,6 +48,16 @@
<i class="el-icon-success"></i>
<h4>文件上传成功</h4>
<p>文件已准备好进行后续处理</p>
<el-button
type="primary"
size="medium"
icon="el-icon-arrow-right"
@click="handleNextStep"
class="goto-next-btn"
>
继续处理
</el-button>
</div>
</template>
@ -124,6 +135,11 @@ export default {
'setFileData'
]),
handleNextStep() {
console.log('手动点击继续处理按钮');
this.$emit('next');
},
handleFileChange(file) {
this.file = file.raw
this.fileList = [file]
@ -172,6 +188,7 @@ export default {
simulateUploadComplete() {
//
setTimeout(() => {
try {
//
const mockFileData = {
fileName: this.file.name,
@ -186,17 +203,37 @@ export default {
// Vuex
this.setFileData(mockFileData)
//
//
this.$store.commit('process/UPDATE_STEP_STATUS', { step: 'upload', status: 'completed' })
this.$store.commit('process/SET_FILE_UPLOADED', true)
//
this.loading = false
this.uploadStatus = 'completed'
console.log('文件上传完成,状态已设置为:', this.uploadStatus)
//
this.$message.success('文件上传成功,请点击下一步按钮继续')
this.$message({
message: '文件上传成功,请点击下一步按钮继续',
type: 'success',
duration: 5000,
showClose: true
})
//
this.$emit('file-uploaded', mockFileData)
console.log('触发file-uploaded事件文件数据:', mockFileData)
// DOM
this.$nextTick(() => {
console.log('DOM已更新文件上传状态:', this.uploadStatus)
})
} catch (error) {
console.error('文件上传完成处理出错:', error)
this.uploadStatus = 'error'
this.loading = false
this.$message.error('处理上传文件时出错')
}
}, 500)
},
@ -245,12 +282,12 @@ export default {
})
}
//
const rowCount = 5
//
const rowCount = Math.min(5, Math.floor(Math.random() * 10) + 3)
for (let i = 0; i < rowCount; i++) {
const row = {}
for (let j = 0; j < colCount; j++) {
row['col' + j] = `数据 ${i + 1}-${j + 1}`
row['col' + j] = `数据 ${i+1}-${j+1}`
}
rows.push(row)
}
@ -269,45 +306,58 @@ export default {
<style scoped>
.file-upload {
margin-bottom: 20px;
width: 100%;
}
.upload-area {
padding: 20px 0;
margin-bottom: 20px;
}
.file-info {
margin-top: 20px;
padding: 15px;
background-color: #f5f7fa;
border: 1px solid #EBEEF5;
border-radius: 4px;
padding: 15px;
background-color: #F5F7FA;
}
.file-detail {
display: flex;
flex-direction: column;
gap: 8px;
flex-wrap: wrap;
gap: 15px;
}
.file-detail span {
flex: 1 0 30%;
min-width: 200px;
}
.upload-success {
text-align: center;
padding: 15px 0;
margin: 20px 0;
}
.upload-success i {
font-size: 40px;
color: #67c23a;
font-size: 48px;
color: #67C23A;
margin-bottom: 10px;
}
.upload-success h4 {
margin: 10px 0;
font-size: 18px;
font-size: 20px;
color: #303133;
}
.upload-success p {
color: #606266;
margin-bottom: 15px;
}
.goto-next-btn {
margin-top: 10px;
font-size: 16px;
padding: 10px 20px;
}
.file-preview {
@ -318,8 +368,12 @@ export default {
margin-bottom: 20px;
}
.data-preview {
margin-top: 30px;
}
.data-preview h4 {
margin: 15px 0;
margin-bottom: 15px;
font-size: 16px;
color: #303133;
}

@ -8,6 +8,7 @@
processingText="正在对数据进行预处理..."
:processingPercentage="processingPercentage"
errorText="预处理出错,请重试"
:showPrevButton="true"
@start="startProcess"
@retry="startProcess"
>

@ -19,7 +19,7 @@
:loading="loadingStatus[0]"
:progress="progressStatus[0]"
@prev="navToPrev"
@next="completeStep(1)"
@next="goToNextStep(1)"
@file-uploaded="handleFileUploaded"
/>
</div>
@ -32,7 +32,7 @@
:progress="progressStatus[1]"
:fileData="processData.fileData"
@prev="navToPrev"
@next="completeStep(2)"
@next="goToNextStep(2)"
@start-preprocess="handlePreprocess"
/>
</div>
@ -45,7 +45,7 @@
:progress="progressStatus[2]"
:preprocessedData="processData.preprocessedData"
@prev="navToPrev"
@next="completeStep(3)"
@next="goToNextStep(3)"
@start-merge="handleFormatMerge"
/>
</div>
@ -58,7 +58,7 @@
:progress="progressStatus[3]"
:mergedData="processData.mergedData"
@prev="navToPrev"
@next="completeStep(4)"
@next="goToNextStep(4)"
@start-correction="handleWordCorrection"
/>
</div>
@ -124,17 +124,28 @@ export default {
this.currentStep--;
}
},
completeStep(step) {
console.log('完成步骤', step, '准备导航到下一步');
goToNextStep(step) {
console.log('准备跳转到下一步, 当前步骤:', step);
//
this.stepStatus[step - 1] = 'completed';
//
//
if (step < 5) {
this.currentStep++;
console.log('导航到下一步', step, '->', this.currentStep);
//
this.stepStatus[step] = 'waiting';
// DOM
this.$nextTick(() => {
this.currentStep = step + 1;
console.log('已跳转到下一步,当前步骤:', this.currentStep);
// DOM
setTimeout(() => {
console.log('延迟确认 - 当前活动步骤:', this.currentStep);
console.log('步骤显示状态:', {
步骤1: document.querySelector('[v-show="currentStep === 1"]')?.style.display,
步骤2: document.querySelector('[v-show="currentStep === 2"]')?.style.display,
步骤3: document.querySelector('[v-show="currentStep === 3"]')?.style.display
});
}, 100);
});
}
},
simulateProgress(stepIndex, duration) {
@ -146,7 +157,6 @@ export default {
this.loadingStatus[stepIndex] = true;
const startTime = Date.now();
const endTime = startTime + duration;
const updateProgress = () => {
const now = Date.now();

@ -53,16 +53,29 @@
</div>
</div>
<!-- 步骤操作按钮 -->
<!-- 简化步骤操作按钮区域 -->
<div class="step-actions">
<el-button @click="prevStep" :disabled="loading" type="default">{{ '上一步' }}</el-button>
<!-- 上一步按钮 -->
<div class="prev-button-area">
<el-button
v-if="showPrevButton"
@click="prevStep"
:disabled="loading"
type="default"
>{{ '上一步' }}</el-button>
<div v-else class="empty-space"></div>
</div>
<!-- 下一步按钮 - 仅显示一个 -->
<div class="next-button-area">
<el-button
type="primary"
@click="nextStep"
:disabled="!allowNext || loading"
@click="goToNextStep"
:disabled="!isCompleted"
>{{ '下一步' }}</el-button>
</div>
</div>
</div>
</template>
<script>
@ -105,6 +118,10 @@ export default {
retryButtonText: {
type: String,
default: '重试'
},
showPrevButton: {
type: Boolean,
default: false
}
},
computed: {
@ -140,10 +157,6 @@ export default {
},
isCompleted() {
return this.status === 'completed' || this.status === 'reviewing';
},
allowNext() {
// completed
return this.status === 'completed';
}
},
methods: {
@ -151,9 +164,9 @@ export default {
console.log('触发prev事件');
this.$emit('prev');
},
nextStep() {
console.log('触发next事件当前状态:', this.status);
if (this.allowNext) {
goToNextStep() {
if (this.isCompleted) {
console.log('直接跳转到下一步');
this.$emit('next');
} else {
console.warn('当前状态不允许进入下一步:', this.status);
@ -161,9 +174,11 @@ export default {
}
},
startOperation() {
console.log('触发start事件');
this.$emit('start');
},
retryOperation() {
console.log('触发retry事件');
this.$emit('retry');
}
}
@ -222,4 +237,12 @@ export default {
padding-top: 20px;
border-top: 1px solid #EBEEF5;
}
.empty-space {
width: 80px;
}
.prev-button-area, .next-button-area {
min-width: 80px;
}
</style>

@ -7,8 +7,9 @@ const state = {
mergeResults: null,
correctionResults: null,
analysisResults: null,
fileUploaded: false,
stepStatus: {
upload: 'pending',
upload: 'waiting',
preprocess: 'pending',
merge: 'pending',
correction: 'pending',
@ -25,6 +26,9 @@ const mutations = {
},
SET_FILE_DATA(state, data) {
state.fileData = data
if (data) {
state.fileUploaded = true
}
},
SET_PREPROCESS_RESULTS(state, results) {
state.preprocessResults = results
@ -40,6 +44,15 @@ const mutations = {
},
UPDATE_STEP_STATUS(state, { step, status }) {
state.stepStatus[step] = status
if (step === 'upload' && status === 'completed') {
state.fileUploaded = true
}
},
RESET_FILE_UPLOADED(state) {
state.fileUploaded = false
},
SET_FILE_UPLOADED(state, status) {
state.fileUploaded = status
}
}
@ -70,6 +83,17 @@ const actions = {
commit('SET_ANALYSIS_RESULTS', results)
commit('UPDATE_STEP_STATUS', { step: 'analysis', status: 'completed' })
},
uploadFile({ commit }) {
return new Promise((resolve) => {
commit('UPDATE_STEP_STATUS', { step: 'upload', status: 'running' })
setTimeout(() => {
commit('UPDATE_STEP_STATUS', { step: 'upload', status: 'completed' })
commit('SET_FILE_UPLOADED', true)
resolve({ success: true, message: '文件上传成功' })
}, 1000)
})
},
resetProcess({ commit }) {
commit('SET_CURRENT_STEP', 1)
commit('SET_UPLOADED_FILES', [])
@ -78,11 +102,13 @@ const actions = {
commit('SET_MERGE_RESULTS', null)
commit('SET_CORRECTION_RESULTS', null)
commit('SET_ANALYSIS_RESULTS', null)
commit('RESET_FILE_UPLOADED')
const steps = ['upload', 'preprocess', 'merge', 'correction', 'analysis']
steps.forEach(step => {
commit('UPDATE_STEP_STATUS', { step, status: 'pending' })
})
commit('UPDATE_STEP_STATUS', { step: 'upload', status: 'waiting' })
}
}
@ -95,7 +121,8 @@ const getters = {
correctionResults: state => state.correctionResults,
analysisResults: state => state.analysisResults,
stepStatus: state => state.stepStatus,
isStepCompleted: state => step => state.stepStatus[step] === 'completed'
isStepCompleted: state => step => state.stepStatus[step] === 'completed',
fileUploaded: state => state.fileUploaded
}
export default {

@ -3,11 +3,12 @@
<h1 class="process-title">文件处理流程</h1>
<div class="process-steps">
<el-steps :active="currentStep" finish-status="success" align-center>
<el-step title="文件上传" description="上传Excel或CSV文件"></el-step>
<el-step title="数据预处理" description="规范化文本格式"></el-step>
<el-step title="格式合并" description="统一数据格式"></el-step>
<el-step title="单词纠错" description="纠正错误拼写"></el-step>
<el-step title="大模型分析" description="使用AI分析内容"></el-step>
<el-step
v-for="(step, index) in steps"
:key="index"
:title="step.title"
:description="step.description"
:status="getStepStatus(index + 1)"></el-step>
</el-steps>
</div>
@ -51,15 +52,27 @@ export default {
ModelAnalysis
},
data() {
return {
steps: [
{ title: '文件上传', description: '上传Excel或CSV文件' },
{ title: '数据预处理', description: '规范化文本格式' },
{ title: '格式合并', description: '统一数据格式' },
{ title: '单词纠错', description: '纠正错误拼写' },
{ title: '大模型分析', description: '使用AI分析内容' }
]
}
},
computed: {
...mapState('process', ['currentStep', 'uploadedFiles']),
...mapState('process', ['currentStep', 'uploadedFiles', 'stepStatus', 'fileUploaded']),
...mapGetters('process', ['isStepCompleted']),
canProceedToNextStep() {
//
switch (this.currentStep) {
case 1:
return this.isStepCompleted('upload')
return this.isStepCompleted('upload') || this.fileUploaded
case 2:
return this.isStepCompleted('preprocess')
case 3:
@ -77,6 +90,28 @@ export default {
methods: {
...mapActions('process', ['setCurrentStep']),
getStepStatus(stepIndex) {
const stepKeys = ['upload', 'preprocess', 'merge', 'correction', 'analysis'];
//
if (stepIndex === 1 && (this.isStepCompleted('upload') || this.fileUploaded)) {
return 'success';
}
//
if (stepIndex === this.currentStep) {
return 'process';
}
//
if (stepIndex < this.currentStep && this.isStepCompleted(stepKeys[stepIndex - 1])) {
return 'success';
}
//
return 'wait';
},
prevStep() {
if (this.currentStep > 1) {
this.setCurrentStep(this.currentStep - 1)
@ -84,8 +119,14 @@ export default {
},
nextStep() {
if (this.currentStep < 5 && this.canProceedToNextStep) {
this.setCurrentStep(this.currentStep + 1)
if (this.currentStep < 5) {
console.log('Process.vue: 准备进入下一步,当前步骤:', this.currentStep, '下一步骤:', this.currentStep + 1);
// 使nextTickDOM
this.$nextTick(() => {
this.setCurrentStep(this.currentStep + 1);
console.log('Process.vue: 已切换到下一步,当前步骤:', this.currentStep + 1);
});
}
},

Loading…
Cancel
Save