This commit is contained in:
zyronon
2023-11-08 00:11:51 +08:00
parent 2d151d8cfe
commit 5e874cc04b
2 changed files with 14 additions and 86 deletions

3
components.d.ts vendored
View File

@@ -9,9 +9,7 @@ declare module 'vue' {
export interface GlobalComponents {
Add: typeof import('./src/components/Toolbar/Add.vue')['default']
AddDict: typeof import('./src/components/Add/AddDict.vue')['default']
AddWord: typeof import('./src/components/Modal/AddWord.vue')['default']
AddWordDialog: typeof import('./src/components/Modal/AddWordDialog.vue')['default']
AddWordModal: typeof import('./src/components/Modal/AddWordModal.vue')['default']
ArticleList: typeof import('./src/components/Article/ArticleList.vue')['default']
Backgorund: typeof import('./src/components/Backgorund.vue')['default']
BaseButton: typeof import('./src/components/BaseButton.vue')['default']
@@ -60,7 +58,6 @@ declare module 'vue' {
SettingModal: typeof import('./src/components/Modal/SettingModal.vue')['default']
Slide: typeof import('./src/components/Slide.vue')['default']
Statistics: typeof import('./src/components/Practice/Statistics.vue')['default']
Swiper: typeof import('./src/components/Swiper.vue')['default']
Toolbar: typeof import('./src/components/Toolbar/Toolbar.vue')['default']
Tooltip: typeof import('./src/components/Tooltip.vue')['default']
TranslateSetting: typeof import('./src/components/Toolbar/TranslateSetting.vue')['default']

View File

@@ -1,27 +1,15 @@
<script setup lang="ts">
import WordList from "@/components/WordList.vue";
import {$computed, $ref} from "vue/macros";
import Slide from "@/components/Slide.vue";
import DictList from "@/components/DictList.vue";
import {Icon} from "@iconify/vue";
import {$ref} from "vue/macros";
import {useBaseStore} from "@/stores/base.ts";
import {useSettingStore} from "@/stores/setting.ts";
import {useRuntimeStore} from "@/stores/runtime.ts";
import {useDisableEventListener} from "@/hooks/event.ts";
import {Dict, DictType, languageCategoryOptions, Sort} from "@/types.ts";
import {Dict, DictType, Sort} from "@/types.ts";
import {onMounted, reactive, watch} from "vue";
import {FormInstance, FormRules} from "element-plus";
import {dictionaryResources} from "@/assets/dictionary.ts";
import {cloneDeep} from "lodash-es";
import {emitter, EventKey} from "@/utils/eventBus.ts";
import ChapterList from "@/components/ChapterList.vue";
let data = $ref({
words: [],
index: 0
})
const store = useBaseStore()
const settingStore = useSettingStore()
@@ -31,21 +19,8 @@ const emit = defineEmits([
'close',
])
let step = $ref(0)
let isEdit = $ref(true)
useDisableEventListener()
let list = $computed(() => {
return store.myDicts.filter(v => v.type === DictType.customArticle)
.concat([
store.simple,
store.wrong,
store.collect
])
.concat([{name: '',} as any])
})
let form = reactive({
id: '',
name: '123',
@@ -63,82 +38,30 @@ let wordForm = reactive({
ukphone: '',
})
let languageCategoryList = []
let categoryList = {}
let tagList = {}
const ruleFormRef = $ref<FormInstance>()
const rules = reactive<FormRules>({
name: [
{required: true, message: '请输入名称', trigger: 'blur'},
{max: 20, message: '名称不能超过20个字符', trigger: 'blur'},
],
category: [{required: true, message: '请选择', trigger: 'change'}],
tags: [{required: true, message: '请选择', trigger: 'change'}],
languageCategory: [{required: true, message: '请选择', trigger: 'change'}],
})
watch(() => form.languageCategory, () => form.category = '')
watch(() => form.category, () => form.tags = [])
onMounted(() => {
dictionaryResources.map(v => {
// if (!languageCategoryList.find(w => w === v.languageCategory)) {
// languageCategoryList.push(v.languageCategory)
// }
if (categoryList[v.language]) {
if (!categoryList[v.language].find(w => w === v.category)) {
categoryList[v.language].push(v.category)
}
} else {
categoryList[v.language] = [v.category]
}
if (tagList[v.category]) {
tagList[v.category] = Array.from(new Set(tagList[v.category].concat(v.tags)))
} else {
tagList[v.category] = v.tags
}
})
console.log('languageCategoryList', languageCategoryList)
console.log('categoryList', categoryList)
console.log('tagList', tagList)
})
function selectDict(dict: Dict) {
runtimeStore.editDict = cloneDeep(dict)
isEdit = false
step = 1
}
async function onSubmit() {
await ruleFormRef.validate((valid, fields) => {
if (valid) {
let data = {
sort: Sort.normal,
type: DictType.customArticle,
originWords: [],
words: [],
chapterWordNumber: 30,
chapterWords: [],
chapterIndex: 0,
chapterWordIndex: 0,
statistics: [],
articles: [],
url: '',
...form,
}
if (form.id) {
let rIndex = store.myDicts.findIndex(v => v.id === form.id)
runtimeStore.editDict = data
store.myDicts[rIndex] = cloneDeep(data)
isEdit = false
} else {
if (store.myDicts.find(v => v.name === form.name)) {
return ElMessage.warning('已有相同名称词典!')
} else {
runtimeStore.editDict = data
store.myDicts.push(cloneDeep(data))
isEdit = false
console.log('submit!', data)
}
}
@@ -156,6 +79,7 @@ function close() {
<template>
<div id="AddWordDialog">
<el-form
class="form"
ref="ruleFormRef"
:rules="rules"
:model="wordForm"
@@ -169,10 +93,10 @@ function close() {
<el-form-item label="音标">
<el-input v-model="wordForm.ukphone"/>
</el-form-item>
<el-form-item>
<div class="flex-center">
<el-button @click="step = 0">返回</el-button>
<el-button type="primary" @click="onSubmit">确定</el-button>
</el-form-item>
</div>
</el-form>
</div>
</template>
@@ -182,15 +106,22 @@ function close() {
#AddWordDialog {
position: fixed;
width: 700rem;
height: 70vh;
width: 400rem;
height: 300rem;
left: 50%;
top: 50%;
transform: translate3D(-50%, -50%, 0);
z-index: 9999999;
background: var(--color-second-bg);
display: flex;
align-items: center;
justify-content: center;
$header-height: 60rem;
.form {
width: 90%;
}
}
</style>