diff --git a/components.d.ts b/components.d.ts index d2445a09..191235de 100644 --- a/components.d.ts +++ b/components.d.ts @@ -10,11 +10,11 @@ declare module 'vue' { Add: typeof import('./src/components/toolbar/Add.vue')['default'] ArticleList2: typeof import('./src/components/list/ArticleList2.vue')['default'] ArticleList3: typeof import('./src/components/list/ArticleList3.vue')['default'] - ArticleListFQ: typeof import('./src/components/article/ArticleList-FQ.vue')['default'] + ArticleList4: typeof import('./src/components/list2/ArticleList4.vue')['default'] Backgorund: typeof import('./src/components/Backgorund.vue')['default'] BaseButton: typeof import('./src/components/BaseButton.vue')['default'] BaseIcon: typeof import('./src/components/BaseIcon.vue')['default'] - BaseList: typeof import('./src/components/list/BaseList.vue')['default'] + BaseList: typeof import('./src/components/list2/BaseList.vue')['default'] ChapterList: typeof import('./src/components/list/ChapterList.vue')['default'] ChapterName: typeof import('./src/components/toolbar/ChapterName.vue')['default'] Close: typeof import('./src/components/icon/Close.vue')['default'] @@ -28,7 +28,6 @@ declare module 'vue' { EditAbleText: typeof import('./src/components/EditAbleText.vue')['default'] EditArticle: typeof import('./src/components/article/EditArticle.vue')['default'] EditBatchArticleModal: typeof import('./src/components/article/EditBatchArticleModal.vue')['default'] - EditBatchArticleModalFQ: typeof import('./src/components/article/EditBatchArticleModal-FQ.vue')['default'] EditSingleArticleModal: typeof import('./src/components/article/EditSingleArticleModal.vue')['default'] ElButton: typeof import('element-plus/es')['ElButton'] ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] @@ -67,6 +66,8 @@ declare module 'vue' { VolumeIcon: typeof import('./src/components/icon/VolumeIcon.vue')['default'] VolumeSetting: typeof import('./src/components/toolbar/VolumeSetting.vue')['default'] WordItem: typeof import('./src/components/list/WordItem.vue')['default'] + WordList: typeof import('./src/components/list2/WordList.vue')['default'] + WordList4: typeof import('./src/components/list2/WordList4.vue')['default'] WordListDialog: typeof import('./src/components/dialog/WordListDialog.vue')['default'] } export interface ComponentCustomProperties { diff --git a/src/App.vue b/src/App.vue index 3d140165..6ab140c4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -50,7 +50,7 @@ async function init() { console.time() store.init().then(() => { store.load = true - console.timeEnd() + // console.timeEnd() }) await settingStore.init() setTheme(settingStore.theme) diff --git a/src/assets/css/style.scss b/src/assets/css/style.scss index 2fbf14dc..1cb0fe50 100644 --- a/src/assets/css/style.scss +++ b/src/assets/css/style.scss @@ -371,6 +371,26 @@ footer { } } + &.border { + &.active { + .item-title { + border-bottom: 2px solid gray !important; + } + } + + .item-title { + transition: all .3s; + cursor: pointer; + border-bottom: 2px solid transparent; + } + + &:hover { + .item-title { + border-bottom: 2px solid gray !important; + } + } + } + .item-title { display: flex; align-items: center; @@ -387,11 +407,12 @@ footer { color: gray; } } -} -.item-sub-title { - font-size: 16rem; - color: gray; + .item-sub-title { + font-size: 16rem; + color: gray; + } + } .text-shadow { diff --git a/src/components/Input.vue b/src/components/Input.vue index 701cdcfd..e10eb59e 100644 --- a/src/components/Input.vue +++ b/src/components/Input.vue @@ -39,7 +39,8 @@ useWindowClick((e: PointerEvent) => { .base-input { border: 1px solid var(--color-second-bg); - border-radius: 4rem; + border-radius: 6rem; + overflow: hidden; padding: 3rem 5rem; transition: all .3s; display: flex; diff --git a/src/components/article/EditArticle.vue b/src/components/article/EditArticle.vue index 08872d6a..96275485 100644 --- a/src/components/article/EditArticle.vue +++ b/src/components/article/EditArticle.vue @@ -107,7 +107,7 @@ function onPaste(event: ClipboardEvent) { () => { appendTranslate(paste) renewSections() - }, + },null, { confirmButtonText: '需要', cancelButtonText: '关闭', diff --git a/src/components/dialog/Dialog.vue b/src/components/dialog/Dialog.vue index 49ee3b4f..3cd6d372 100644 --- a/src/components/dialog/Dialog.vue +++ b/src/components/dialog/Dialog.vue @@ -20,6 +20,7 @@ export interface ModalProps { cancelButtonText?: string, keyboard?: boolean, confirm?: any + beforeClose?: any } const props = withDefaults(defineProps(), { @@ -49,10 +50,15 @@ let modalRef = $ref(null) const runtimeStore = useRuntimeStore() let id = Date.now() -function close() { +async function close() { if (!visible) { return } + if (props.beforeClose) { + if (!await props.beforeClose()) { + return + } + } //记录停留时间,避免时间太短,弹框闪烁 let stayTime = Date.now() - openTime; let closeTime = 300; @@ -110,11 +116,11 @@ onUnmounted(() => { } }) -useEventListener('keyup', (e: KeyboardEvent) => { +useEventListener('keyup', async (e: KeyboardEvent) => { if (e.key === 'Escape' && props.keyboard) { let lastItem = runtimeStore.modalList[runtimeStore.modalList.length - 1] if (lastItem?.id === id) { - close() + await cancel() } } }) @@ -125,13 +131,13 @@ async function ok() { await props.confirm() confirmButtonLoading = false } - await close() emit('ok') + await close() } async function cancel() { - await close() emit('cancel') + await close() } diff --git a/src/components/dialog/DictDiglog.vue b/src/components/dialog/DictDiglog.vue index 58cc0525..cd91e9e9 100644 --- a/src/components/dialog/DictDiglog.vue +++ b/src/components/dialog/DictDiglog.vue @@ -22,6 +22,7 @@ import EditBatchArticleModal from "@/components/article/EditBatchArticleModal.vu import {nanoid} from "nanoid"; import DictListPanel from "@/components/DictListPanel.vue"; import {useRouter} from "vue-router"; +import ArticleList4 from "@/components/list2/ArticleList4.vue"; const store = useBaseStore() const settingStore = useSettingStore() @@ -316,13 +317,26 @@ function addDict() {
{{ dictIsArticle ? '文章' : '章节' }}列表
- - + :show-border="true" + @title="val => emitter.emit(EventKey.openArticleListModal,val.item)" + @click="(val:any) => runtimeStore.editDict.chapterIndex = val.index" + :active-index="runtimeStore.editDict.chapterIndex" + :list="runtimeStore.editDict.articles"> + + +
diff --git a/src/components/list2/ArticleList4.vue b/src/components/list2/ArticleList4.vue new file mode 100644 index 00000000..1c1261a9 --- /dev/null +++ b/src/components/list2/ArticleList4.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/src/components/list/BaseList.vue b/src/components/list2/BaseList.vue similarity index 53% rename from src/components/list/BaseList.vue rename to src/components/list2/BaseList.vue index 5da53db4..7fd83cf4 100644 --- a/src/components/list/BaseList.vue +++ b/src/components/list2/BaseList.vue @@ -1,37 +1,52 @@ @@ -83,24 +102,20 @@ defineExpose({scrollToBottom, scrollToItem}) >
- +
-
- {{ item.name }} - {{ item.usphone }} - -
-
-
{{ tran }}
-
+
- +
@@ -113,7 +128,7 @@ defineExpose({scrollToBottom, scrollToItem}) @import "@/assets/css/variable"; .scroller { - height: 100%; + flex: 1; padding: 0 var(--space); } diff --git a/src/components/list2/WordList.vue b/src/components/list2/WordList.vue new file mode 100644 index 00000000..9f212645 --- /dev/null +++ b/src/components/list2/WordList.vue @@ -0,0 +1,67 @@ + + + + + \ No newline at end of file diff --git a/src/pages/dict/DictManage.vue b/src/pages/dict/DictManage.vue index f1edc6cd..ebb14af4 100644 --- a/src/pages/dict/DictManage.vue +++ b/src/pages/dict/DictManage.vue @@ -62,7 +62,7 @@ function cancelAddDict() { onMounted(() => { // selectDict({dict: store.currentDict, index: 0}) - console.log('router.params', route) + // console.log('router.params', route) switch (route.query.type) { case 'addDict': setTimeout(() => { diff --git a/src/pages/dict/components/ArticleDictDetail.vue b/src/pages/dict/components/ArticleDictDetail.vue index 58c7c98d..99ce936e 100644 --- a/src/pages/dict/components/ArticleDictDetail.vue +++ b/src/pages/dict/components/ArticleDictDetail.vue @@ -21,6 +21,7 @@ import * as XLSX from "xlsx"; import {MessageBox} from "@/utils/MessageBox.tsx"; import {syncMyDictList} from "@/hooks/dict.ts"; import {useWindowClick} from "@/hooks/event.ts"; +import ArticleList4 from "@/components/list2/ArticleList4.vue"; const store = useBaseStore() const settingStore = useSettingStore() @@ -39,7 +40,7 @@ const isPinDict = $computed(() => { function handleCheckedChange(val) { chapterIndex = val.index - article = val.data + article = val.item } function delArticle(index: number) { @@ -297,20 +298,21 @@ defineExpose({getDictDetail, add, editDict})
- -