houzhongjian
2024-08-08 820397e43a0b64d35c6d31d2a55475061438593b
提交 | 用户 | 时间
820397 1 <template>
H 2   <div class="">
3     <Title title="歌词" desc="自己编写歌词或使用Ai生成歌词,两节/8行效果最佳">
4       <el-input
5         v-model="formData.lyric"
6         :autosize="{ minRows: 6, maxRows: 6}"
7         resize="none"
8         type="textarea"
9         maxlength="1200"
10         show-word-limit
11         placeholder="请输入您自己的歌词"
12       />
13     </Title>
14
15     <Title title="音乐风格">
16       <el-space class="flex-wrap">
17         <el-tag v-for="tag in tags" :key="tag" round class="mb-8px">{{tag}}</el-tag>
18       </el-space>
19
20       <el-button
21         :type="showCustom ? 'primary': 'default'" 
22         round 
23         size="small" 
24         class="mb-6px"
25         @click="showCustom = !showCustom"
26       >自定义风格
27       </el-button>
28     </Title>
29
30     <Title v-show="showCustom" desc="描述您想要的音乐风格,Suno无法识别艺术家的名字,但可以理解流派和氛围" class="-mt-12px">
31       <el-input
32         v-model="formData.style"
33         :autosize="{ minRows: 4, maxRows: 4}"
34         resize="none"
35         type="textarea"
36         maxlength="256"
37         show-word-limit
38         placeholder="输入音乐风格(英文)"
39       />
40     </Title>
41
42     <Title title="音乐/歌曲名称">
43       <el-input v-model="formData.name" placeholder="请输入音乐/歌曲名称"/>
44     </Title>
45
46     <Title title="版本">
47       <el-select v-model="formData.version" placeholder="请选择">
48         <el-option
49           v-for="item in [{
50             value: '3',
51             label: 'V3'
52           }, {
53             value: '2',
54             label: 'V2'
55           }]"
56           :key="item.value"
57           :label="item.label"
58           :value="item.value"
59         />
60       </el-select>
61     </Title>
62   </div>
63 </template>
64
65 <script lang="ts" setup>
66 import Title from '../title/index.vue'
67 defineOptions({ name: 'Lyric' })
68
69 const tags = ['rock', 'punk', 'jazz', 'soul', 'country', 'kidsmusic', 'pop']
70
71 const showCustom = ref(false)
72
73 const formData = reactive({
74   lyric: '',
75   style: '',
76   name: '',
77   version: ''
78 })
79
80 defineExpose({
81   formData
82 })
83 </script>