refactor: 按功能分类重组 components 目录结构

This commit is contained in:
empty
2026-01-22 00:02:05 +08:00
parent 44848cd40f
commit 6843328b0b
30 changed files with 155 additions and 140 deletions

View File

@@ -588,11 +588,11 @@
<script setup>
import { computed, ref, watch } from 'vue'
import { storeToRefs } from 'pinia'
import { useAppStore } from '../stores/app'
import { useParadigmStore } from '../stores/paradigm'
import { buildPrompt } from '../utils/promptBuilder.js'
import { useAppStore } from '../../stores/app'
import { useParadigmStore } from '../../stores/paradigm'
import { buildPrompt } from '../../utils/promptBuilder.js'
import { marked } from 'marked'
import IconLibrary from './icons/IconLibrary.vue'
import IconLibrary from '../icons/IconLibrary.vue'
const appStore = useAppStore()
const paradigmStore = useParadigmStore()
@@ -847,7 +847,7 @@ const saveDocument = async () => {
if (!currentDocument.value) return
try {
const { updateDocument } = await import('../db/index.js')
const { updateDocument } = await import('../../db/index.js')
await updateDocument(currentDocument.value.id, {
title: documentTitle.value,
content: documentContent.value
@@ -871,7 +871,7 @@ const changeDocStatus = async (status) => {
if (!currentDocument.value) return
try {
const { updateDocument } = await import('../db/index.js')
const { updateDocument } = await import('../../db/index.js')
await updateDocument(currentDocument.value.id, { status })
currentDocument.value.status = status
} catch (error) {

View File

@@ -53,8 +53,8 @@
<script setup>
import { computed } from 'vue'
import { useAppStore } from '../stores/app'
import IconLibrary from './icons/IconLibrary.vue'
import { useAppStore } from '../../stores/app'
import IconLibrary from '../icons/IconLibrary.vue'
const appStore = useAppStore()
const currentPage = computed(() => appStore.currentPage)

View File

@@ -98,11 +98,11 @@
<script setup>
import { ref, onMounted } from 'vue'
import { useAppStore } from '../stores/app'
import { useDatabaseStore } from '../stores/database'
import { useParadigmStore } from '../stores/paradigm'
import { getParadigmList } from '../config/paradigms'
import IconLibrary from './icons/IconLibrary.vue'
import { useAppStore } from '../../stores/app'
import { useDatabaseStore } from '../../stores/database'
import { useParadigmStore } from '../../stores/paradigm'
import { getParadigmList } from '../../config/paradigms'
import IconLibrary from '../icons/IconLibrary.vue'
const appStore = useAppStore()
const dbStore = useDatabaseStore()

View File

@@ -82,7 +82,7 @@
<script setup>
import { ref, computed, watch } from 'vue'
import IconLibrary from './icons/IconLibrary.vue'
import IconLibrary from '../icons/IconLibrary.vue'
const props = defineProps({
visible: Boolean
@@ -114,7 +114,7 @@ const filteredDocuments = computed(() => {
// 稿
const loadDocuments = async () => {
try {
const { getAllDocuments } = await import('../db/index.js')
const { getAllDocuments } = await import('../../db/index.js')
documents.value = await getAllDocuments()
} catch (error) {
console.error('加载文稿失败:', error)

View File

@@ -70,8 +70,8 @@
<script setup>
import { ref, computed } from 'vue'
import { useDatabaseStore } from '../stores/database'
import IconLibrary from './icons/IconLibrary.vue'
import { useDatabaseStore } from '../../stores/database'
import IconLibrary from '../icons/IconLibrary.vue'
const props = defineProps({
visible: Boolean

View File

@@ -112,9 +112,9 @@
<script setup>
import { ref, computed, watch } from 'vue'
import { getParadigmList } from '../config/paradigms.js'
import { useParadigmStore } from '../stores/paradigm.js'
import IconLibrary from './icons/IconLibrary.vue'
import { getParadigmList } from '../../config/paradigms.js'
import { useParadigmStore } from '../../stores/paradigm.js'
import IconLibrary from '../icons/IconLibrary.vue'
const paradigmStore = useParadigmStore()

View File

@@ -172,12 +172,12 @@
<script setup>
import { ref, reactive, onMounted, onUnmounted, computed, watch } from 'vue'
import { storeToRefs } from 'pinia'
import { useAppStore } from '../stores/app'
import { useDatabaseStore } from '../stores/database.js'
import { useParadigmStore } from '../stores/paradigm.js'
import { getParadigmList } from '../config/paradigms.js'
import RequirementParserPanel from './RequirementParserPanel.vue'
import IconLibrary from './icons/IconLibrary.vue'
import { useAppStore } from '../../stores/app'
import { useDatabaseStore } from '../../stores/database.js'
import { useParadigmStore } from '../../stores/paradigm.js'
import { getParadigmList } from '../../config/paradigms.js'
import RequirementParserPanel from '../specialized/RequirementParserPanel.vue'
import IconLibrary from '../icons/IconLibrary.vue'
const appStore = useAppStore()
const { analysisText, isAnalyzing } = storeToRefs(appStore)

View File

@@ -265,17 +265,17 @@
<script setup>
import { ref, computed, watch, onMounted } from 'vue'
import { useAppStore } from '../stores/app'
import { useDatabaseStore } from '../stores/database'
import { useAppStore } from '../../stores/app'
import { useDatabaseStore } from '../../stores/database'
import {
splitIntoSentencesWithPosition,
computeDiff,
getDiffStats
} from '../utils/textDiff'
import { saveDocumentVersion, updateDocument } from '../db/index.js'
import DocumentSelectorModal from './DocumentSelectorModal.vue'
import MaterialSelectorModal from './MaterialSelectorModal.vue'
import IconLibrary from './icons/IconLibrary.vue'
} from '../../utils/textDiff'
import { saveDocumentVersion, updateDocument } from '../../db/index.js'
import DocumentSelectorModal from '../modals/DocumentSelectorModal.vue'
import MaterialSelectorModal from '../modals/MaterialSelectorModal.vue'
import IconLibrary from '../icons/IconLibrary.vue'
const appStore = useAppStore()
const dbStore = useDatabaseStore()

View File

@@ -99,8 +99,8 @@
<script setup>
import { ref, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useAppStore } from '../stores/app'
import IconLibrary from './icons/IconLibrary.vue'
import { useAppStore } from '../../stores/app'
import IconLibrary from '../icons/IconLibrary.vue'
const appStore = useAppStore()
const { articleFusionState } = storeToRefs(appStore)

View File

@@ -347,14 +347,14 @@
<script setup>
import { ref, computed, watch } from 'vue'
import { useAppStore } from '../stores/app'
import { useParadigmStore } from '../stores/paradigm'
import { splitIntoSentencesWithPosition, computeDiff } from '../utils/textDiff'
import { updateDocument, saveDocumentVersion } from '../db/index.js'
import ParadigmSelectorModal from './ParadigmSelectorModal.vue'
import DocumentSelectorModal from './DocumentSelectorModal.vue'
import RequirementParserPanel from './RequirementParserPanel.vue'
import IconLibrary from './icons/IconLibrary.vue'
import { useAppStore } from '../../stores/app'
import { useParadigmStore } from '../../stores/paradigm'
import { splitIntoSentencesWithPosition, computeDiff } from '../../utils/textDiff'
import { updateDocument, saveDocumentVersion } from '../../db/index.js'
import ParadigmSelectorModal from '../modals/ParadigmSelectorModal.vue'
import DocumentSelectorModal from '../modals/DocumentSelectorModal.vue'
import RequirementParserPanel from '../specialized/RequirementParserPanel.vue'
import IconLibrary from '../icons/IconLibrary.vue'
const appStore = useAppStore()
const paradigmStore = useParadigmStore()

View File

@@ -764,16 +764,16 @@
<script setup>
import { ref, computed, watch } from 'vue'
import { storeToRefs } from 'pinia'
import { useAppStore } from '../stores/app'
import { useDatabaseStore } from '../stores/database'
import { updateDocument, saveDocumentVersion, getDocumentById } from '../db/index.js'
import IconLibrary from './icons/IconLibrary.vue'
import { SECTION_TYPES, getSectionTypeById, getSectionTypeClasses } from '../config/sectionTypes'
import { getLogicParadigmById, buildLogicPrompt } from '../config/logicParadigms'
import { computeDiff, applySelectedChanges as applyDiffChanges, getDiffStats, splitIntoSentencesWithPosition } from '../utils/textDiff'
import MaterialSelectorModal from './MaterialSelectorModal.vue'
import DocumentSelectorModal from './DocumentSelectorModal.vue'
import ParadigmSelectorModal from './ParadigmSelectorModal.vue'
import { useAppStore } from '../../stores/app'
import { useDatabaseStore } from '../../stores/database'
import { updateDocument, saveDocumentVersion, getDocumentById } from '../../db/index.js'
import IconLibrary from '../icons/IconLibrary.vue'
import { SECTION_TYPES, getSectionTypeById, getSectionTypeClasses } from '../../config/sectionTypes'
import { getLogicParadigmById, buildLogicPrompt } from '../../config/logicParadigms'
import { computeDiff, applySelectedChanges as applyDiffChanges, getDiffStats, splitIntoSentencesWithPosition } from '../../utils/textDiff'
import MaterialSelectorModal from '../modals/MaterialSelectorModal.vue'
import DocumentSelectorModal from '../modals/DocumentSelectorModal.vue'
import ParadigmSelectorModal from '../modals/ParadigmSelectorModal.vue'
const appStore = useAppStore()
const dbStore = useDatabaseStore()

View File

@@ -194,12 +194,12 @@
<script setup>
import { ref, computed, watch, onMounted, onUnmounted } from 'vue'
import { useAppStore } from '../stores/app'
import { computePreciseDiff, getPreciseDiffStats } from '../utils/preciseDiff.js'
import IconLibrary from './icons/IconLibrary.vue'
import { useAppStore } from '../../stores/app'
import { computePreciseDiff, getPreciseDiffStats } from '../../utils/preciseDiff.js'
import IconLibrary from '../icons/IconLibrary.vue'
import { Document, Packer, Paragraph, TextRun } from 'docx'
import { saveAs } from 'file-saver'
import DocumentSelectorModal from './DocumentSelectorModal.vue'
import DocumentSelectorModal from '../modals/DocumentSelectorModal.vue'
const appStore = useAppStore()

View File

@@ -120,10 +120,10 @@
<script setup>
import { ref, computed, onMounted } from 'vue'
import { useAppStore } from '../stores/app'
import { useDatabaseStore } from '../stores/database.js'
import { useAppStore } from '../../stores/app'
import { useDatabaseStore } from '../../stores/database.js'
import { storeToRefs } from 'pinia'
import IconLibrary from './icons/IconLibrary.vue'
import IconLibrary from '../icons/IconLibrary.vue'
const appStore = useAppStore()
const dbStore = useDatabaseStore()
@@ -178,7 +178,7 @@ const getCountByStatus = (status) => {
// 稿
const loadDocuments = async () => {
try {
const { getAllDocuments } = await import('../db/index.js')
const { getAllDocuments } = await import('../../db/index.js')
documents.value = await getAllDocuments()
} catch (error) {
console.error('加载文稿失败:', error)
@@ -206,7 +206,7 @@ const toggleVersionPanel = () => {
// 稿
const createNewDocument = async () => {
try {
const { createDocument } = await import('../db/index.js')
const { createDocument } = await import('../../db/index.js')
const id = await createDocument({
title: '未命名文稿',
content: '',
@@ -236,7 +236,7 @@ const duplicateDocument = async () => {
if (!doc) return
try {
const { createDocument } = await import('../db/index.js')
const { createDocument } = await import('../../db/index.js')
await createDocument({
title: doc.title + ' (副本)',
content: doc.content,
@@ -261,7 +261,7 @@ const deleteSelectedDocument = async () => {
if (!selectedDocId.value) return
try {
const { deleteDocument } = await import('../db/index.js')
const { deleteDocument } = await import('../../db/index.js')
await deleteDocument(selectedDocId.value)
selectedDocId.value = null
showDeleteConfirm.value = false

View File

@@ -301,10 +301,10 @@
<script setup>
import { ref, reactive, computed, onMounted } from 'vue'
import { useAppStore } from '../stores/app'
import { REFERENCE_TYPES } from '../config/references.js'
import { getDimensionSetList } from '../config/dimensionSets.js'
import IconLibrary from './icons/IconLibrary.vue'
import { useAppStore } from '../../stores/app'
import { REFERENCE_TYPES } from '../../config/references.js'
import { getDimensionSetList } from '../../config/dimensionSets.js'
import IconLibrary from '../icons/IconLibrary.vue'
const appStore = useAppStore()
@@ -370,7 +370,7 @@ const getTypeIcon = (type) => {
//
const loadMaterials = async () => {
try {
const { getAllReferences } = await import('../db/index.js')
const { getAllReferences } = await import('../../db/index.js')
materials.value = await getAllReferences()
} catch (error) {
console.error('加载素材失败:', error)
@@ -442,7 +442,7 @@ const saveMaterial = async () => {
}
try {
const { addReference, updateReference } = await import('../db/index.js')
const { addReference, updateReference } = await import('../../db/index.js')
const materialData = {
type: editForm.type,
@@ -483,7 +483,7 @@ const deleteMaterial = async () => {
if (!selectedId.value) return
try {
const { deleteReference } = await import('../db/index.js')
const { deleteReference } = await import('../../db/index.js')
await deleteReference(selectedId.value)
selectedId.value = null
showDeleteConfirm.value = false

View File

@@ -190,9 +190,9 @@
<script setup>
import { ref, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useAppStore } from '../stores/app'
import IconLibrary from './icons/IconLibrary.vue'
import DocumentSelectorModal from './DocumentSelectorModal.vue'
import { useAppStore } from '../../stores/app'
import IconLibrary from '../icons/IconLibrary.vue'
import DocumentSelectorModal from '../modals/DocumentSelectorModal.vue'
import { marked } from 'marked'
const appStore = useAppStore()

View File

@@ -229,8 +229,8 @@
<script setup>
import { ref, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useAppStore } from '../stores/app'
import IconLibrary from './icons/IconLibrary.vue'
import { useAppStore } from '../../stores/app'
import IconLibrary from '../icons/IconLibrary.vue'
const appStore = useAppStore()
const { outlineWriterState } = storeToRefs(appStore)
@@ -306,7 +306,7 @@ import {
addOutlineMaterial,
updateOutlineMaterial,
deleteOutlineMaterial
} from '../db/index.js'
} from '../../db/index.js'
const materials = computed(() => outlineWriterState.value.materials)
const showMaterialModal = computed({

View File

@@ -183,10 +183,10 @@
<script setup>
import { ref, computed, onMounted, onUnmounted } from 'vue'
import { storeToRefs } from 'pinia'
import { useAppStore } from '../stores/app'
import { useParadigmStore } from '../stores/paradigm.js'
import IconLibrary from './icons/IconLibrary.vue'
import { getParadigmList } from '../config/paradigms.js'
import { useAppStore } from '../../stores/app'
import { useParadigmStore } from '../../stores/paradigm.js'
import IconLibrary from '../icons/IconLibrary.vue'
import { getParadigmList } from '../../config/paradigms.js'
import { marked } from 'marked'
import { Document, Packer, Paragraph, TextRun, HeadingLevel } from 'docx'
import { saveAs } from 'file-saver'

View File

@@ -211,9 +211,9 @@
<script setup>
import { ref, reactive, onMounted, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useAppStore } from '../stores/app'
import { modelProviders } from '../utils/config.js'
import IconLibrary from './icons/IconLibrary.vue'
import { useAppStore } from '../../stores/app'
import { modelProviders } from '../../utils/config.js'
import IconLibrary from '../icons/IconLibrary.vue'
const appStore = useAppStore()
const { selectedProviderId, currentProvider } = storeToRefs(appStore)
@@ -250,7 +250,7 @@ const currentProviderStatus = computed(() => {
//
const loadStats = async () => {
try {
const { getAllDocuments, getAllReferences, getAllParadigms, exportDatabase } = await import('../db/index.js')
const { getAllDocuments, getAllReferences, getAllParadigms, exportDatabase } = await import('../../db/index.js')
stats.documents = (await getAllDocuments()).length
stats.materials = (await getAllReferences()).length
@@ -273,7 +273,7 @@ const formatSize = (bytes) => {
//
const exportData = async () => {
try {
const { exportAsJSON } = await import('../db/index.js')
const { exportAsJSON } = await import('../../db/index.js')
const data = await exportAsJSON()
const blob = new Blob([JSON.stringify(data, null, 2)], { type: 'application/json' })
@@ -363,11 +363,11 @@ const executeConfirmAction = async () => {
try {
if (confirmAction.value === 'clearDocuments') {
const { clearDocuments } = await import('../db/index.js')
const { clearDocuments } = await import('../../db/index.js')
await clearDocuments()
showToastMessage('文稿已清空')
} else if (confirmAction.value === 'resetDatabase') {
const { resetDatabase } = await import('../db/index.js')
const { resetDatabase } = await import('../../db/index.js')
await resetDatabase()
showToastMessage('数据库已重置')
}

View File

@@ -195,8 +195,8 @@
<script setup>
import { computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useAppStore } from '../stores/app'
import IconLibrary from './icons/IconLibrary.vue'
import { useAppStore } from '../../stores/app'
import IconLibrary from '../icons/IconLibrary.vue'
const appStore = useAppStore()
const {

View File

@@ -170,9 +170,9 @@
<script setup>
import { ref, watch, computed, defineProps, defineEmits } from 'vue'
import { getDocumentVersions, saveDocumentVersion, updateDocument } from '../db/index.js'
import { computeDiff, getDiffStats } from '../utils/textDiff.js'
import IconLibrary from './icons/IconLibrary.vue'
import { getDocumentVersions, saveDocumentVersion, updateDocument } from '../../db/index.js'
import { computeDiff, getDiffStats } from '../../utils/textDiff.js'
import IconLibrary from '../icons/IconLibrary.vue'
const props = defineProps({
visible: Boolean,

View File

@@ -142,9 +142,9 @@
<script setup>
import { ref, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useAppStore } from '../stores/app'
import { useAppStore } from '../../stores/app'
import { marked } from 'marked'
import IconLibrary from './icons/IconLibrary.vue'
import IconLibrary from '../icons/IconLibrary.vue'
const appStore = useAppStore()
const { articleFusionState } = storeToRefs(appStore)

View File

@@ -53,9 +53,9 @@
<script setup>
import { computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useAppStore } from '../stores/app'
import { useAppStore } from '../../stores/app'
import { marked } from 'marked'
import IconLibrary from './icons/IconLibrary.vue'
import IconLibrary from '../icons/IconLibrary.vue'
const appStore = useAppStore()
const { outlineWriterState } = storeToRefs(appStore)

View File

@@ -276,16 +276,16 @@
<script setup>
import { ref } from 'vue'
import { storeToRefs } from 'pinia'
import { useAppStore } from '../stores/app'
import { useParadigmStore } from '../stores/paradigm'
import DeepSeekAPI from '../api/deepseek'
import IconLibrary from './icons/IconLibrary.vue'
import { useAppStore } from '../../stores/app'
import { useParadigmStore } from '../../stores/paradigm'
import DeepSeekAPI from '../../api/deepseek'
import IconLibrary from '../icons/IconLibrary.vue'
import {
buildRequirementParserPrompt,
parseParadigmConfig,
buildParadigmObject,
validateParadigm
} from '../utils/requirementParser'
} from '../../utils/requirementParser'
const emit = defineEmits(['close', 'paradigm-created'])