68 lines
1.3 KiB
Vue
68 lines
1.3 KiB
Vue
<template>
|
|
<el-input
|
|
v-if="isBookSource"
|
|
id="debug-key"
|
|
v-model="searchKey"
|
|
placeholder="搜索书名、作者"
|
|
:prefix-icon="Search"
|
|
style="padding-bottom: 4px"
|
|
@keydown.enter="startDebug"
|
|
/>
|
|
<el-input
|
|
id="debug-text"
|
|
v-model="printDebug"
|
|
type="textarea"
|
|
readonly
|
|
:rows="29"
|
|
placeholder="这里用于输出调试信息"
|
|
/>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import API from '@api'
|
|
import { Search } from '@element-plus/icons-vue'
|
|
|
|
const store = useSourceStore()
|
|
|
|
const printDebug = ref('')
|
|
const searchKey = ref('')
|
|
|
|
watch(
|
|
() => store.isDebuging,
|
|
() => {
|
|
if (store.isDebuging) startDebug()
|
|
},
|
|
)
|
|
|
|
const appendDebugMsg = (msg: string) => {
|
|
const debugDom = document.querySelector('#debug-text')
|
|
debugDom!.scrollTop = debugDom!.scrollHeight
|
|
printDebug.value += msg + '\n'
|
|
}
|
|
const startDebug = async () => {
|
|
printDebug.value = ''
|
|
try {
|
|
await API.saveSource(store.currentSource)
|
|
} catch (e) {
|
|
store.debugFinish()
|
|
throw e
|
|
}
|
|
API.debug(
|
|
store.currentSourceUrl,
|
|
searchKey.value || store.searchKey,
|
|
appendDebugMsg,
|
|
store.debugFinish,
|
|
)
|
|
}
|
|
|
|
const isBookSource = computed(() => {
|
|
return /bookSource/i.test(window.location.href)
|
|
})
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
:deep(#debug-text) {
|
|
height: calc(100vh - 45px - 36px - 5px);
|
|
}
|
|
</style>
|