aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/logUploader.vue
diff options
context:
space:
mode:
Diffstat (limited to 'logUploader.vue')
-rw-r--r--logUploader.vue65
1 files changed, 65 insertions, 0 deletions
diff --git a/logUploader.vue b/logUploader.vue
new file mode 100644
index 0000000..4856bce
--- /dev/null
+++ b/logUploader.vue
@@ -0,0 +1,65 @@
+<template>
+ <v-app>
+ <v-container>
+ <v-file-input label="选择日志文件" v-model="selectedFile"></v-file-input>
+
+ <v-btn color="primary" @click="uploadFile">上传</v-btn>
+
+ <v-card>
+ <v-card-text>
+ <pre v-html="formattedLog"></pre>
+ </v-card-text>
+ </v-card>
+ </v-container>
+ </v-app>
+ </template>
+
+ <script>
+ export default {
+ data() {
+ return {
+ selectedFile: null,
+ logContent: '',
+ }
+ },
+
+ computed: {
+ formattedLog() {
+ return this.logContent.replace(/\[(.*?)\]/g, '<span class="log-tag">$1</span>');
+ },
+ },
+
+ methods: {
+ async uploadFile() {
+ if (!this.selectedFile) {
+ alert('请先选择日志文件!');
+ return;
+ }
+
+ const formData = new FormData();
+ formData.append('file', this.selectedFile);
+
+ try {
+ const response = await fetch('/api/upload', { method: 'POST', body: formData });
+ const data = await response.json();
+
+ if (data.success) {
+ this.logContent = data.logContent;
+ } else {
+ alert('上传出错!');
+ }
+ } catch (error) {
+ console.error(error);
+ alert('发生错误,请稍后重试!');
+ }
+ },
+ },
+ }
+ </script>
+
+ <style>
+ .log-tag {
+ color: green;
+ }
+ </style>
+ \ No newline at end of file