3939 <!-- 状态栏 -->
4040 <StatusBar :env-info =" envInfo" :execution-time =" lastExecutionTime" :code-length =" code.length" />
4141
42- <!-- 通知信息 -->
43- <Toast v-if =" toast.show"
44- :show =" toast.show"
45- :message =" toast.message"
46- :type =" toast.type"
47- :duration =" 3000"
48- :show-progress =" true"
49- @close =" toast.show = false" >
50- </Toast >
51-
5242 <!-- 关于组件 -->
5343 <About v-if =" showAbout" @close =" closeAbout" />
5444
5545 <!-- 设置组件 -->
5646 <Settings v-if =" showSettings" @close =" closeSettings" />
47+
48+ <!-- Toast 组件 -->
49+ <Toast />
5750 </div >
5851</template >
5952
@@ -65,9 +58,10 @@ import AppHeader from './components/AppHeader.vue'
6558import CodeEditor from ' ./components/CodeEditor.vue'
6659import OutputPanel from ' ./components/OutputPanel.vue'
6760import StatusBar from ' ./components/StatusBar.vue'
68- import Toast from ' ./components/Toast.vue'
6961import About from ' ./components/About.vue'
7062import Settings from ' ./components/Settings.vue'
63+ import Toast from ' ./components/Toast.vue'
64+ import { useToast } from ' ./plugins/toast'
7165
7266interface ExecutionResult
7367{
@@ -155,6 +149,7 @@ print(f"Original: {numbers}")
155149print(f"Squared: {squared}") `
156150}
157151
152+ const toast = useToast ()
158153const code = ref (' ' )
159154const currentLanguage = ref (' python2' )
160155const output = ref (' ' )
@@ -183,16 +178,6 @@ const envInfo = ref<EnvInfo>({
183178 language: ' python'
184179})
185180
186- const toast = ref ({
187- show: false ,
188- message: ' ' ,
189- type: ' success' as ' success' | ' error' | ' info'
190- })
191-
192- const showToast = (message : string , type : ' success' | ' error' | ' info' = ' success' ) => {
193- toast .value = { show: true , message , type }
194- }
195-
196181const getLanguageDisplayName = (languageValue : string ) => {
197182 const language = supportedLanguages .value .find (lang => lang .value === languageValue )
198183 return language ? language .name : languageValue
@@ -256,12 +241,12 @@ print("Hello from ${ getLanguageDisplayName(newLanguage) }!")`
256241 // 刷新环境信息
257242 await refreshEnvInfo ()
258243
259- showToast (` 已切换到 ${ getLanguageDisplayName (newLanguage ) } ` , ' info ' )
244+ toast . info (` 已切换到 ${ getLanguageDisplayName (newLanguage ) } ` )
260245}
261246
262247const runCode = async () => {
263248 if (! envInfo .value .installed ) {
264- showToast (` ${ envInfo .value .language } 环境未安装 ` , ' error ' )
249+ toast . error (` ${ envInfo .value .language } 环境未安装 ` )
265250 return
266251 }
267252
@@ -284,16 +269,16 @@ const runCode = async () => {
284269 if (result .stderr ) {
285270 output .value += ' \n ' + result .stderr
286271 }
287- showToast (` 代码执行成功,用时 ${ result .execution_time } 毫秒 ` )
272+ toast . success (` 代码执行成功,用时 ${ result .execution_time } 毫秒 ` )
288273 }
289274 else {
290275 output .value = result .stderr || ' 代码执行失败 (无输出)'
291- showToast (' 代码执行失败,查看输出的错误信息' , ' error ' )
276+ toast . error (' 代码执行失败,查看输出的错误信息' )
292277 }
293278 }
294279 catch (error ) {
295280 output .value = ` 代码执行失败: ${ error } `
296- showToast (' 代码执行失败,请检查日志' , ' error ' )
281+ toast . error (' 代码执行失败,请检查日志' )
297282 }
298283 finally {
299284 isRunning .value = false
@@ -302,7 +287,7 @@ const runCode = async () => {
302287
303288const clearOutput = () => {
304289 output .value = ' '
305- showToast (' 输出已清空' , ' info ' )
290+ toast . info (' 输出已清空' )
306291}
307292
308293window .addEventListener (' contextmenu' , (e ) => e .preventDefault (), false )
@@ -340,4 +325,4 @@ onUnmounted(() => {
340325 unlistenSettingsFn ()
341326 }
342327})
343- </script >
328+ </script >
0 commit comments