diff --git a/src/assets/css/style.scss b/src/assets/css/style.scss index 2546c49c..276df105 100644 --- a/src/assets/css/style.scss +++ b/src/assets/css/style.scss @@ -54,6 +54,9 @@ --word-font-family: ui-monospace, sans-serif; --en-article-family: Georgia, sans-serif; --zh-article-family: "Songti SC", "SimSun", "Noto Serif CJK SC", serif; + + --btn-primary: rgb(75, 85, 99); + --btn-info: #909399; } html.dark { @@ -142,9 +145,11 @@ html.dark { .anim { transition: background var(--anim-time), color var(--anim-time), border var(--anim-time); } + .en-article-family { font-family: var(--en-article-family); } + .font-family { font-family: var(--font-family); } @@ -262,35 +267,6 @@ footer { gap: var(--space); } -.pointer { - cursor: pointer; -} - -.flex { - display: flex; -} - -.flex1 { - flex: 1; -} - -.gap10 { - gap: 10rem; -} - -.space-between { - justify-content: space-between; -} - -.align-center { - align-items: center; -} - -.flex-center { - display: flex; - align-items: center; - justify-content: center; -} .panel-page-item { display: flex; @@ -339,10 +315,6 @@ footer { padding: 0 var(--space); } -.space15 { - margin-bottom: 15rem; -} - .common-list1 { display: flex; flex-direction: column; @@ -485,3 +457,24 @@ footer { .center { @apply flex justify-center items-center; } + +.card { + @apply rounded-xl bg-white p-4 mb-5 box-border; +} + +.center { + @apply flex justify-center items-center; +} + +.title { + @apply text-lg font-medium; +} + +.book { + @apply p-4 rounded-md bg-slate-200 relative cursor-pointer h-40 hover:bg-red; +} + +.line { + width: 100%; + border-bottom: 1px solid var(--color-item-border); +} diff --git a/src/components/BackIcon.vue b/src/components/BackIcon.vue new file mode 100644 index 00000000..2cc18c9c --- /dev/null +++ b/src/components/BackIcon.vue @@ -0,0 +1,14 @@ + + + + + diff --git a/src/components/BaseButton.vue b/src/components/BaseButton.vue index 6b655ff2..90303132 100644 --- a/src/components/BaseButton.vue +++ b/src/components/BaseButton.vue @@ -8,7 +8,7 @@ interface IProps { disabled?: boolean loading?: boolean size?: 'small' | 'normal' | 'large', - type?: 'primary' | 'link' + type?: 'primary' | 'link' | 'info' } withDefaults(defineProps(), { @@ -87,6 +87,7 @@ defineEmits(['click']) height: 3rem; font-size: 1.1rem; padding: 0 1.4rem; + & > span { font-size: 1.1rem; } @@ -108,7 +109,7 @@ defineEmits(['click']) &.primary { - background: rgb(75, 85, 99); + background: var(--btn-primary); } &.link { @@ -120,6 +121,10 @@ defineEmits(['click']) } } + &.info { + background: var(--btn-info); + } + &.active { opacity: .4; } diff --git a/src/pages/pc/article/ArticleIndex.vue b/src/pages/pc/article/ArticleIndex.vue index 43c15248..8e387cc9 100644 --- a/src/pages/pc/article/ArticleIndex.vue +++ b/src/pages/pc/article/ArticleIndex.vue @@ -6,103 +6,145 @@ import {useRouter} from "vue-router"; import {enArticle} from "@/assets/dictionary.ts"; import BasePage from "@/pages/pc/components/BasePage.vue"; import {useNav} from "@/utils"; +import {Dict, DictResource, getDefaultDict} from "@/types.ts"; +import {cloneDeep} from "lodash-es"; +import {useRuntimeStore} from "@/stores/runtime.ts"; +import {getArticleBookDataByUrl} from "@/utils/article.ts"; +import BaseIcon from "@/components/BaseIcon.vue"; +import Dialog from "@/pages/pc/components/dialog/Dialog.vue"; +import Input from "@/pages/pc/components/Input.vue"; +import {computed} from "vue"; const {nav} = useNav() const base = useBaseStore() const router = useRouter() const store = useBaseStore() +const runtimeStore = useRuntimeStore() +let showAddChooseDialog = $ref(false) +let showSearchDialog = $ref(false) +let searchKey = $ref('') function clickEvent(e) { console.log('e', e) } + +async function getBookDetail(val: DictResource) { + let r = await getArticleBookDataByUrl(val) + runtimeStore.editDict = cloneDeep(r) + nav('book-detail') +} + +async function getBookDetail2(val: Dict) { + runtimeStore.editDict = cloneDeep(val) + nav('book-detail') +} + +const searchList = computed(() => { + if (searchKey) { + return enArticle.filter(v => v.name.toLocaleLowerCase().includes(searchKey.toLocaleLowerCase())) + } + return [] +}) + +function addBook() { + showAddChooseDialog = false + runtimeStore.editDict = getDefaultDict() + nav('book-detail', {isAdd: true}) +} diff --git a/src/pages/pc/article/ArticleIndexTEST.vue b/src/pages/pc/article/ArticleIndexTEST.vue deleted file mode 100644 index 82dc3634..00000000 --- a/src/pages/pc/article/ArticleIndexTEST.vue +++ /dev/null @@ -1,164 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/pages/pc/article/BatchEditArticlePage.vue b/src/pages/pc/article/BatchEditArticlePage.vue new file mode 100644 index 00000000..f18022d9 --- /dev/null +++ b/src/pages/pc/article/BatchEditArticlePage.vue @@ -0,0 +1,277 @@ + + + + + diff --git a/src/pages/pc/article/BookDetail.vue b/src/pages/pc/article/BookDetail.vue new file mode 100644 index 00000000..9cfb9c6a --- /dev/null +++ b/src/pages/pc/article/BookDetail.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/src/pages/pc/article/EditArticlePage.vue b/src/pages/pc/article/EditArticlePage.vue index a7009c2e..467e2ef9 100644 --- a/src/pages/pc/article/EditArticlePage.vue +++ b/src/pages/pc/article/EditArticlePage.vue @@ -1,6 +1,6 @@ diff --git a/src/pages/pc/components/article/EditArticle.old b/src/pages/pc/article/components/EditArticle.old similarity index 100% rename from src/pages/pc/components/article/EditArticle.old rename to src/pages/pc/article/components/EditArticle.old diff --git a/src/pages/pc/components/article/EditArticle2.vue b/src/pages/pc/article/components/EditArticle2.vue similarity index 99% rename from src/pages/pc/components/article/EditArticle2.vue rename to src/pages/pc/article/components/EditArticle2.vue index cb108257..4fb3056a 100644 --- a/src/pages/pc/components/article/EditArticle2.vue +++ b/src/pages/pc/article/components/EditArticle2.vue @@ -487,7 +487,7 @@ function setStartTime(val: Sentence, i: number, j: number) {
开始时间:
-
+