123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- <script setup lang="ts">
- import {defineComponent, onMounted, PropType, ref} from "vue";
- import {PlayList} from "@/types/musicType.ts";
- import KuiInput from "@/components/public/kui/kui-input.vue";
- import KuiCheckbox from "@/components/public/kui/kui-checkbox.vue";
- import message from "@/components/public/kui/message";
- import {ErrorCode} from "@/types/apiTypes.ts";
- import {api_playlist_add, api_playlist_update} from "@/apis/musicControl.ts";
- defineComponent({
- name: "addPlayList"
- })
- const props = defineProps({
- playlist: {
- type: Object as PropType<PlayList>,
- default: (): PlayList => {
- return {
- id: -1,
- name: '',
- icon: '',
- cover: '',
- description: '',
- playCount: 0,
- trackCount: 0,
- createTime: 0,
- lastPlayTime: 0,
- isTagSearch: false,
- isSync: false,
- isPublic: false,
- isLike: false
- }
- }
- }
- })
- const emits = defineEmits<{
- (e: 'close' ): void,
- (e: 'submit'): void
- }>()
- const isEdit = ref(false);
- // 歌单名称
- const playlistName = ref('');
- // 歌单描述
- const description = ref('');
- // 歌单封面
- const cover = ref('');
- const isLike = ref(false);
- const isPublic = ref(false);
- onMounted(()=>{
- if (props.playlist && props.playlist.id > -1)
- {
- console.log(props.playlist);
- isEdit.value = true;
- playlistName.value = props.playlist.name;
- description.value = props.playlist.description;
- cover.value = props.playlist.cover;
- console.log(cover.value);
- isLike.value = !!props.playlist.isLike;
- isPublic.value = !!props.playlist.isPublic;
- }else {
- isEdit.value = false;
- }
- })
- function closeDialog() {
- emits('close');
- }
- async function submitHandle() {
- console.log('submit');
- // 创建歌单
- let param: Partial<PlayList> = {
- name: playlistName.value,
- description: description.value,
- cover: cover.value,
- isPublic: isPublic.value,
- isLike: isLike.value
- }
- if (!param.name)
- {
- message.error('歌单名称不能为空');
- return;
- }
- if (isEdit.value)
- {
- // 编辑歌单
- param.id = props.playlist.id;
- let res = await api_playlist_update(param);
- if (res.code === ErrorCode.success)
- {
- message.success('编辑成功');
- emits('close');
- }
- else {
- message.error(res.msg);
- }
- }
- else {
- // 创建歌单
- let res = await api_playlist_add(param);
- if (res.code === ErrorCode.success)
- {
- message.success('创建成功');
- emits('close');
- }
- else {
- message.error(res.msg);
- }
- }
- }
- </script>
- <template>
- <div class="dialog-content form-dialog">
- <div class="dialog-title">
- {{ isEdit? '编辑歌单' : '创建歌单' }}
- <div
- class="close-btn"
- @click="closeDialog()">
- X
- </div>
- </div>
- <div class="dialog-show">
- <div class="form-row" >
- <kui-input label="歌单名称"
- placeholder="歌单的名称"
- v-model:value="playlistName"
- />
- </div>
- <div class="form-row mt-4"
- v-if="isLike"
- >
- <kui-input
- label="歌单描述"
- placeholder="歌单的描述"
- v-model:value="description"
- />
- </div>
- <div class="form-row mt-4">
- <kui-checkbox id="isPublicPlaylist" v-model:value="isPublic" >
- 是否公开
- </kui-checkbox>
- </div>
- </div>
- <div class="dialog-footer">
- <div class="btn cancel-btn mr-2" @click="closeDialog()">取消</div>
- <div class="btn primary-btn" @click="submitHandle">确定</div>
- </div>
- </div>
- </template>
- <style scoped>
- .form-row{
- width: 90%;
- height: 40px;
- display: flex;
- align-items: center;
- margin: 1rem auto;
- }
- </style>
|