|
@@ -48,11 +48,7 @@
|
|
|
@click="handleCharterSelect(card)"
|
|
|
>
|
|
|
<n-flex style="flex: 1">
|
|
|
- <n-avatar
|
|
|
- round
|
|
|
- size="small"
|
|
|
- :src="card.icon"
|
|
|
- />
|
|
|
+ <n-avatar round size="small" :src="card.icon" />
|
|
|
<n-flex style="flex: 1" vertical>
|
|
|
<span> {{ card.name }}</span>
|
|
|
<span> {{ card.desc }}</span>
|
|
@@ -64,6 +60,7 @@
|
|
|
<n-form
|
|
|
ref="formRef"
|
|
|
:model="form"
|
|
|
+ :rules="rules"
|
|
|
label-placement="left"
|
|
|
label-width="auto"
|
|
|
require-mark-placement="right-hanging"
|
|
@@ -71,7 +68,7 @@
|
|
|
maxWidth: '640px'
|
|
|
}"
|
|
|
>
|
|
|
- <n-form-item label="名称" path="inputValue">
|
|
|
+ <n-form-item label="名称" path="name">
|
|
|
<n-input v-model:value="form.name" />
|
|
|
</n-form-item>
|
|
|
<n-form-item label="语速" path="inputValue">
|
|
@@ -110,12 +107,13 @@
|
|
|
import { ref, reactive, watchEffect, computed } from 'vue'
|
|
|
import { NSlider, NForm, NFormItem, NAvatar, useMessage } from 'naive-ui'
|
|
|
import { saveTOTTS, SaveTOTTSParams } from '@/api'
|
|
|
+import type { FormInst } from 'naive-ui'
|
|
|
import { useMainStore } from '@/store'
|
|
|
import Avatar3 from '@/assets/Avatar3.png'
|
|
|
import Avatar2 from '@/assets/Avatar2.png'
|
|
|
const main = useMainStore()
|
|
|
const showModal = ref(false)
|
|
|
-
|
|
|
+const formRef = ref<FormInst | null>()
|
|
|
const formId = ref()
|
|
|
const form = reactive({
|
|
|
document: '',
|
|
@@ -124,6 +122,13 @@ const form = reactive({
|
|
|
speed: 1,
|
|
|
volume: 5
|
|
|
})
|
|
|
+const rules = {
|
|
|
+ name: {
|
|
|
+ required: true,
|
|
|
+ message: '请输入名称',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+}
|
|
|
const message = useMessage()
|
|
|
const emits = defineEmits(['close', 'submit'])
|
|
|
|
|
@@ -181,26 +186,44 @@ const handleCharterSelect = (card) => {
|
|
|
const handleSave = async () => {
|
|
|
const data: SaveTOTTSParams = {
|
|
|
...form,
|
|
|
- num: main.sceneCode
|
|
|
+ num: main.sceneCode,
|
|
|
+ id: formId.value
|
|
|
}
|
|
|
if (!form.document) {
|
|
|
message.error('内容不能为空!')
|
|
|
+ return
|
|
|
}
|
|
|
- console.log(data)
|
|
|
- await saveTOTTS(data)
|
|
|
- message.success('新增成功!')
|
|
|
- emits('submit')
|
|
|
+ formRef.value?.validate(async (errors) => {
|
|
|
+ console.log('errors', errors, form)
|
|
|
+ if (!errors) {
|
|
|
+ console.log(data)
|
|
|
+ await saveTOTTS(data)
|
|
|
+ message.success('新增成功!')
|
|
|
+ emits('submit')
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
const activeType = computed(() => (type) => form.voiceType === type)
|
|
|
|
|
|
watchEffect(() => {
|
|
|
showModal.value = props.show
|
|
|
+ console.log('props.data', props.isEditing, props.data)
|
|
|
if (props.isEditing) {
|
|
|
formId.value = props.data.id
|
|
|
- console.log('props.data', props.data)
|
|
|
form.document = props.data.document
|
|
|
+ form.name = props.data.name
|
|
|
+ form.voiceType = props.data.voiceType || '501001'
|
|
|
+ form.speed = props.data.speed || 1
|
|
|
+ form.volume = props.data.volume || 5
|
|
|
// form.document = props.data.document
|
|
|
+ } else {
|
|
|
+ formId.value = ''
|
|
|
+ form.document = ''
|
|
|
+ form.name = ''
|
|
|
+ form.voiceType = '501001'
|
|
|
+ form.speed = 1
|
|
|
+ form.volume = 5
|
|
|
}
|
|
|
})
|
|
|
</script>
|